
Android
安卓机器人
从事android开发,热爱Java,热爱移动平台,喜爱C#,当然最重要还是爱情,一直默默的寻找着自己的程序爱情
展开
-
Android code generation(1)
Android code generation with AcceleoSummaryThis tutorial covers the instalation of Acceleo and the creation of a Code Generator to model Android Applications.Instalation and Requis转载 2013-06-04 22:34:49 · 1112 阅读 · 0 评论 -
使用Travis CI自动打包APK,并发布到fir
Travis CI 是目前新兴的开源持续集成构建项目,越来越大的大公司也在使用Travis CI, Github每天构建量都在4000以上。我们为什么不试试呢。前言我们平常的发布流程大概如下: 使用Travis CI,可以简化如下: 想象这样的场景:马上要发布内测版本了,合并代码之后,开始用IDE打包,打包完成之后再发布到fir,这样整个流程下来估计要10几分钟,电脑被占用其他事情也做不原创 2017-06-03 16:08:37 · 3137 阅读 · 1 评论 -
APP性能-内存优化-内存管理认知
前言作为一名Java程序员,我们不需要像C/C++那样为每一个new出来的对象手动delete/free释放内存。因为有GC(垃圾回收器)的自动回收机制会帮我们自动处理。正因为我们把这些操作交给了JVM,所以如果出现内存溢出和内存泄漏的情况,如果对JVM不熟悉,往往会很难找出问题所在,进而解决问题。所以要对内存使用进行优化,必须先熟悉Java的内存机制。1.了解Java的内存管理我们都知道andro原创 2017-06-04 10:58:44 · 2087 阅读 · 0 评论 -
迁移到Android Studio 3.0
前言Google 发布了Android Studio 3.0,有很多功能值得我们使用,比如:Android Profiler, Android Plugin for Gradle 3.0.0(com.android.tools.build:gradle:3.0.0-alpha3)等。 今天这篇主要介绍下Android Plugin for Gradle 3.0.0.1.更新配置Gradle需要更新原创 2017-06-20 22:03:41 · 23080 阅读 · 1 评论 -
开源一个动画demo
源码下载地址:https://github.com/Sherchen/AnimationsDemo ,欢迎star, fork效果图Transition动画if api > 21, use activity transition animation, otherwise use Transitions-Everywhereif(TransitionHelper.isSysTransitionEn原创 2017-06-21 13:23:06 · 458 阅读 · 0 评论 -
总结下android开发规范
地址:https://github.com/Sherchen/AndroidConventions1. AS规范1.1 CopyRight在Settings/Editor/CopyRight里添加一份,内容你可以在github上找一份,改下,这样每次新增文件,IDE都会自动加上CopyRight.1.2 模板在Settings/Editor/File and Code Templates右侧的inc原创 2017-05-20 14:10:54 · 632 阅读 · 0 评论 -
Android架构模板
源码地址:https://github.com/Sherchen/ArchitectureTemplate 欢迎star, forkMvpThere are lots of things that you can find on website, its architecture diagram is below:MviYou can read the mvi about js.You can r原创 2017-05-20 15:40:50 · 517 阅读 · 0 评论 -
Android databinding
配置环境data binding是Google推出的一个实现MVVM的一个支持库。可以极大的简化开发工作。它非常灵活,且支持从android2.1开始。为了使用data binding,Android gradle plugin必须是1.5.0-alpha1或者以上版本, Android Studio 1.3或者以上。在项目项目下的build.gradle添加代码:androi原创 2017-06-18 09:17:27 · 692 阅读 · 0 评论 -
新款安卓架构设计-Architecture Components介绍
架构模板篇介绍了mvp,mvi,mvvm(databinding),今天介绍的这款安卓架构框架是Google在今天5月17号推出的:Architecture Components. 它的第一版本解决如下问题: 1)自动管理activity和fragment的生命周期,从而避免资源和内存溢出问题 2)持续化java对象到sqlite数据库主要包括组成部分: 1)Lifecycle Compone原创 2017-06-21 16:50:53 · 702 阅读 · 0 评论 -
kotlin进阶-快速开发
前言kotlin很强大,而且可以兼容java一起使用,为了能够在实际项目开发中快速使用,整理了一个模板工程。代码地址:https://github.com/Sherchen/SimpleKotlinBoilerplate介绍为了快速上手,结合了当前流行的一些框架,开发了 干货网的一个简单demo. 采用闭包方式进行代码封装,可以从代码量上比较java,确实减少了很多。1. 采用MVPMVP采用的是原创 2017-06-24 17:35:45 · 733 阅读 · 0 评论 -
kotlin源码分析-分析和使用Collections集合
集合api提供了很多有用的方法,基本包含了java集合类中的所有方法,提供了更多的扩展。我们来看看有什么特别的方法,以及怎么使用,深入讲解闭包的封装和使用/** * Returns `true` if all elements match the given [predicate]. */public inline fun <T> Iterable<T>.all(predicate: (T)原创 2017-06-25 17:21:14 · 2399 阅读 · 0 评论 -
安卓多渠道打包汇总(很全面,囊括了几乎所有)
前言有一次,因为市场部通知我要打30个渠道包,然后我傻傻的用了AS打所有的渠道包,结果花了30多分钟,这是一次痛苦的经历了^_^,所以今天就在这里汇总下当前大家都在用的多渠道打包方法,比较它们的优缺点。你可以找到一款适合你的方法。1. 使用AS实现多渠道打包其实就是用了AS的gradle脚本productFlavors来完成多渠道打包。下面我写的,为了灵活性,我把渠道放到了一个txt文件,有兴趣的话原创 2017-06-13 17:25:50 · 2554 阅读 · 0 评论 -
Android layout系列-autolayout
1. 前言在Android项目开发的过程,开发者需要根据UI设计师的设计效果图做各种各样的机型适配,这往往是最麻烦和最浪费时间的。下面几种方案可供选择。support multi screenandroid-percent-support-libandroid-percent-support-extendAndroidAutoLayoutAndroidAutoLayout是最原创 2017-07-06 09:09:23 · 870 阅读 · 0 评论 -
APP性能-内存优化-实际分析
前言项目开发过程中,因为一些不好的编码习惯导致App运行过程中出现内存泄漏,APP卡顿;甚至内存溢出(OOM),APP强行退出,这对用户体验来说是非常不好的。1.内存泄漏(Memory Leak)内存泄漏出现的原因,是因为一些对象没有被使用,但是在GC Roots是不可达的,那么GC无法正常回收。内存泄漏会产生以下问题。1.1 导致App卡顿, ANR内存泄漏会使得可用内存越来越少,我们知道,可用内原创 2017-06-04 17:22:56 · 1112 阅读 · 0 评论 -
lint/checkstyle/findbugs/pmd使用汇总
前言在开发应用的过程中,往往更关注功能和用户体验。其实优化代码,可以预防和减少一些可能会报出的问题。首先我们必须承认是人都会犯错,使用一些工具可以检查,然后修改问题。1.lint看下官方对lint的定义,如下图 lint的原理如下 使用lint,可有很多方式,包括下面但不只:命令行gradleAS的Inspect Codelint和proguard一样,可以写自定义过滤检查,有如下方式:原创 2017-06-14 22:36:21 · 1518 阅读 · 0 评论 -
2分钟了解kotlin:优点,缺点,设计原则
1. 优点kotlin提供了很多好的特性,比如:null安全检测,属性访问,unchecked exceptions, publication有更详细的介绍。1.1 java 自动转换成kotlinkotlin项目开发总结有介绍如何使用,这个是有JetBrains提供的,目前已经集成到了IDEA/AS, 虽然它不是很完美(我的上篇博客也已经介绍到了),但是对比重新用Kotlin开发一个完全一样功能的原创 2017-07-08 21:23:35 · 15333 阅读 · 0 评论 -
kotlin深入1
前言刚好这段时间没什么事,抓紧时间看了下几个kotlin的开源项目,在这里做个自我汇总。1.兼容性kotlin可以完全兼容Java,以前积累的Java库和Java世界很好用的开源框架,比如retrofit,rxjava,dagger,butterknife可以直接拿过来用。所以有信心的话可以考虑新项目直接从kotlin开发,当然项目评估的时候,要注意时间,毕竟新语言刚开始用的不会像Java那么熟练2原创 2017-06-06 17:20:19 · 794 阅读 · 0 评论 -
Android性能优化典范第5季-优化启动时间
1. 了解APP启动一个APP的启动等待时间越短,用户留在APP的可能性就越大,反之用户可能等待不耐烦,直接切到其他的APP了。所以加快一个APP的启动速度是非常重要的。Android系统提供两种启动模式,冷启动和温启动,冷启动:用户点击桌面图标->系统显示启动窗口->APP窗口,温启动:用户点击最近启动列表->APP窗口。 。简单描述下Android系统为一个APP的启动策略:首先用户点击l原创 2017-06-17 16:52:33 · 924 阅读 · 0 评论 -
kotlin汇总6-函数
1.基础知识函数声明使用fun关键字fun double(x: Int): Int {}函数调用val result = double(2) //调用普通函数Sample().foo() // create instance of class Sample and calls foo//调用类成员函数使用infix标记// Define extension to Intinfix fun Int原创 2017-06-01 16:33:46 · 395 阅读 · 0 评论 -
创建一个不被杀死的service
一、onStartCommand方法,返回START_STICKY 在运行onStartCommand后service进程被kill后,那将保留在开始状态,但是不保留那些传入的intent。不久后service就会再次尝试重新创建,因为保留在开始状态,在创建 service后将保证调用onstartCommand。如果没有传递任何开始命令给service,那将获取到null的intent转载 2017-05-03 16:31:53 · 480 阅读 · 0 评论 -
加快Activity的启动速度
减少onCreate的时间,那就精简onCreate里的代码。放在onResume里好了。为了用户体验更好一些,把页面显示的View细分一下,放在AsyncTask里逐步显示,如果你够熟练,用handler更好,这样用户的看到的就是有层次有步骤的一个个的view的展示,不会是先看到一个黑屏,然后一下显示所有view。最好作成动画,效果更自然些。利用多线程的目的就是尽可能的减少onCreate和on转载 2017-05-03 16:33:57 · 1296 阅读 · 0 评论 -
结束一个APP的几种方法
1. 在application中定义一个单例模式的Activity栈来管理所有Activity。并提供退出所有Activity的方法。AndroidManifest.xml 添加权限退出应用的方法:ActivityManager am= (ActivityManager) this .getSystemService(Context.ACTIVITY_SERVICE转载 2017-05-03 16:35:29 · 923 阅读 · 0 评论 -
Android性能优化之布局优化
目前性能优化专题已完成以下部分:性能优化总纲——性能问题及性能调优方式性能优化第四篇——移动网络优化性能优化第三篇——Java(Android)代码优化性能优化第二篇——布局优化性能优化第一篇——数据库性能优化性能优化实例 1、抽象布局标签(1) 标签include标签常用于将布局中的公共部分提取出来供其他layout共用,以实现转载 2017-05-03 16:38:22 · 551 阅读 · 0 评论 -
Android 平台版本和API 级别的对应关系
平台版本API 级别VERSION_CODE备注Android 7.024N平台亮点Android 6.023M平台亮点Android 5.122LOLLIPOP_MR1平台亮点Android 5.021LOLLIPOP转载 2017-05-23 22:16:58 · 440 阅读 · 0 评论 -
介绍bugly的全量更新
bugly提供的这种更新方式特别适合小团队开发,你只要把一个高版本的apk拖到bugly的控制台,然后创建对应的策略就行了。下面介绍下bugly升级的优势。非常容易定制化UI和策略,更多可以参考bugly1.定制提示升级信息dialog,代码如下Beta.upgradeDialogLayoutId = R.layout.upgrade_dialog;2.其他开关Beta.autoInit = tru原创 2017-05-15 09:49:37 · 2812 阅读 · 0 评论 -
多线程下生产者消费者问题的五种同步方法实现
结果: 从结果上看出也可以实现同步,但一般不使用,因为缓冲区不易控制、数据不易封装和传输。转载 2017-05-06 16:30:22 · 726 阅读 · 0 评论 -
聊聊bugtags
bugtags可以收集bug,也可以在APP端手动提交问题。特别是小团队,所有的人都可以参与测试。试用了下bugtags,汇总问题如下类似于其他的如bugly,友盟一样,很容易集成,几行代码搞定,bugtags集成对apk的大小影响,见图: 影响在170K,在release模式还会更小一点在Android5.0以上手机测试过,问题比较多,经常会出现正常手机Bug.一个很好用的bug管理系统,原创 2017-05-16 11:16:47 · 1138 阅读 · 0 评论 -
对比代码托管平台
我的习惯是开源代码托管在github,私有代码托管在bitbucket,但是最近因为bitbucket网络有点慢,所以了解下其他的托管平台,下面就来做下比较。1.GitHub就不介绍了,基本上大家都会用只支持开源项目2.Bibucket,一句话非常强大,但是国内访问,会因为网络受限,下图是Bitbucket的服务 非常强大,支持私有和开源项目!我们看下免费的部分,团队上限是5个人,私有项目和公有项原创 2017-05-16 17:30:19 · 1719 阅读 · 0 评论 -
谈谈bugly的补丁升级
bugly的补丁升级时通过tinker实现的,bugly对tinker进行了一层封装,所以我们不需要关心tinker的实现原理,如何集成bugly的补丁升级,代码如下dependencies { // tinkersupport插件, 其中lastest.release指拉取最新版本,也可以指定明确版本号,例如1.0.4 classpath "com.tencent.原创 2017-05-15 20:45:15 · 2477 阅读 · 1 评论 -
tinker第1部-集成
之前写了一篇博客,bugly的补丁升级,有提到tinker,接下里会写一个tinker系列,算是深入tinker的学习过程。 这是我修改后的tinker源码地址,是从Tinker官方源码fork而来,为了方便阅读代码,增加了一些注释,后续有修改会不断提交,你可以watch我的fork集成文件参考tinker接入文档直接在AS上运行这个项目,等待build结束,需要注意一下几点1.所有的操作都是在下原创 2017-05-17 16:05:56 · 540 阅读 · 0 评论 -
APP性能-电量优化-安装battery historian
battery historian 官网,里面有英文版的详细文档。 为什么要安装battery historian,是因为我们在adb bugreport 会得到一个庞大的文件,大概有12M以上。而battery historian就是帮助我们分析这个文件的工具。我采用的是build from source code 模式,下面做下归纳。1. 安装go2. 安装git3. 在git-bash里面执原创 2017-05-17 17:46:27 · 414 阅读 · 0 评论 -
APP性能-网络优化-工具篇
工欲善其事,必先利其器。在进行网络优化之前,我们需要一些工具帮助我们来分析和优化。AS的Network Monitor 这种情况代表,网络长期处于激活状态,所以是网络过量使用的情况 这种情况代表,网络有规律的间隔一段时间使用,是网络优化后的结果。使用OkHttpOkHttp是当前Android阵营最主流的http使用框架,参考square对它的介绍如下: HTTP/2 support al原创 2017-05-18 13:02:51 · 839 阅读 · 0 评论 -
APP性能-网络优化-设计篇
在当前WiFi普及的大环境下,我们很容易忽略网络的问题,特别是在我们在室内测试的时候。 基于下面三个原因,我们有必要做网络优化 1. 有效地网络使用能够提高用户体验 2. 使用网络传输数据是电量消耗的一个最重要的来源 3. 有效的网络使用有时候能够显著减少占用带宽。 简单的优化访问网络之前,先检测网络是否可用通过ConnectivityMananger来判断通过Broadcast原创 2017-05-18 14:02:03 · 535 阅读 · 0 评论 -
Android 8(O) 新功能
抽空看了下google 2017 I/O视频,觉得印象最深刻的支持Kotlin。在Kotlin的介绍中,google, jetbrains, square三方参与的介绍中,见识到的Kotlin的强大,就像Swift对于iOS一样,函数式编程和强语言是未来的一种趋势。提出Fluid Experience(流畅体验),出现这个目的,Google在Android 8做了一些修改,包括进入cache模式原创 2017-05-21 10:53:51 · 815 阅读 · 0 评论 -
Android动画实现方式的汇总
安卓发展了这么多年,实现动画的方式也变得多种多样。在你的APP中加入动效会使之增色不少,所以从现在开始学习实现动画的方式,以备将来不时之需,下面是我的一些汇总,以后新的方式,我会在这里加入。 android.view.animation这是最早的一种,支持view的tween和frame动画。 android.animaton又称属性动画(property animation),从3.0原创 2017-05-29 18:04:00 · 618 阅读 · 0 评论