- 博客(24)
- 收藏
- 关注
转载 Handler一定要在主线程实例化吗?new Handler()和new Handler(Looper.getMainLooper())的区别
Handler一定要在主线程实例化吗?new Handler()和new Handler(Looper.getMainLooper())的区别如果你不带参数的实例化:Handler handler = new Handler();那么这个会默认用当前线程的looper一般而言,如果你的Handler是要来刷新操作UI的,那么就需要在主线程下跑。情况:1.要刷新UI,hand
2016-06-20 10:21:10 896
转载 避免Activity内存泄露
在android中context可以作很多操作,但是最主要的功能是加载和访问资源。在android中有两种context,一种是 application context,一种是activity context,通常我们在各种类和方法间传递的是activity context。比如一个activity的onCreate:protected void onCreate(Bundle state
2016-06-15 10:48:48 307
转载 深入理解Android(一):Gradle详解
编者按:随着移动设备硬件能力的提升,Android系统开放的特质开始显现,各种开发的奇技淫巧、黑科技不断涌现,InfoQ特联合《深入理解Android》系列图书作者邓凡平,开设深入理解Android专栏,探索Android从框架到应用开发的奥秘。Gradle是当前非常“劲爆”的构建工具。本篇文章就是专为讲解Gradle而来。介绍Gradle之前,先说点题外话。一、题外话说实
2016-06-13 11:47:44 736
转载 Android Gradle Plugin指南(二)——基本项目
原文地址:http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Basic-Project3、Basic Project(基本项目)一个Gradle项目的构建过程定义在build.gradle文件中,位于项目的根目录下。3.1 Simple build files(简单的构建
2016-06-13 09:25:00 644
转载 Android Gradle Plugin指南(五)——Build Variants(构建变种版本)
6、 Build Variants(构建变种版本) 新构建系统的一个目标就是允许为同一个应用创建不同的版本。这里有两个主要的使用情景:1、同一个应用的不同版本。例如一个免费的版本和一个收费的专业版本。2、同一个应用需要打包成不同的apk以发布Google Play Store。查看http://developer.android.com/google/p
2016-06-13 09:19:58 443
转载 Android批量打包
使用Ant或者Gradle来给程序进行多渠道批量打包,通常都是在manifest文件中写入一个meta标签:meta-data android:name="CHANNEL" android:value="xxx" />meta的key值固定,通过循环改变meta中的value值来实现市场渠道的写入。Ant批量打包实现相对麻烦,以前写的时候多亏了谦虚的天下-《App自动化之使用A
2016-06-12 17:04:07 366
转载 instanceof, isinstance,isAssignableFrom的区别
instanceof运算符 只被用于对象引用变量,检查左边的被测试对象 是不是 右边类或接口的 实例化。如果被测对象是null值,则测试结果总是false。 形象地:自身实例或子类实例 instanceof 自身类 返回true 例: String s=new String("javaisland"); System.out.println(s instanceof St
2016-06-07 14:14:19 277
转载 深入理解Java:注解(Annotation)--注解处理器
如果没有用来读取注解的方法和工作,那么注解也就不会比注释更有用处了。使用注解的过程中,很重要的一部分就是创建于使用注解处理器。Java SE5扩展了反射机制的API,以帮助程序员快速的构造自定义注解处理器。注解处理器类库(java.lang.reflect.AnnotatedElement): Java使用Annotation接口来代表程序元素前面的注解,该接口是所有Anno
2016-06-07 11:07:14 364
转载 Android -- Annotation
Override Annotation@Overridepublic void onCreate(Bundle savedInstanceState){};概念An annotation is a form of metadata, that can be added to Java source code. Classes, methods, variables,
2016-06-06 17:00:28 266
转载 Android EventBus源码解析 带你深入理解EventBus
1、概述一般使用EventBus的组件类,类似下面这种方式:[java] view plain copy public class SampleComponent extends Fragment { @Override public void onCreate(Bundle savedInsta
2016-06-06 14:04:05 234
转载 EventBus使用详解(二)——EventBus使用进阶
一、概述前一篇给大家装简单演示了EventBus的onEventMainThread()函数的接收,其实EventBus还有另外有个不同的函数,他们分别是:1、onEvent2、onEventMainThread3、onEventBackgroundThread4、onEventAsync这四种订阅函数都是使用onEvent开头的,它们的功能稍有不同,在介绍
2016-06-06 07:44:44 244
转载 EventBus使用详解(一)——初步使用EventBus
一、概述EventBus是一款针对Android优化的发布/订阅事件总线。主要功能是替代Intent,Handler,BroadCast在Fragment,Activity,Service,线程之间传递消息.优点是开销小,代码更优雅。以及将发送者和接收者解耦。1、下载EventBus的类库源码:https://github.com/greenrobot/EventBus2、
2016-06-06 07:43:37 254
转载 EventBus事件总线——优雅地替换Handler
什么是EventBusEventBus是Android下高效的发布/订阅事件总线机制。作用是可以代替传统的Intent,Handler,Broadcast或接口函数在Fragment,Activity,Service,线程之间传递数据,执行方法。特点是代码简洁,是一种发布订阅设计模式(Publish/Subsribe),或称作观察者设计模式。下载EventBus1.
2016-06-06 07:41:49 538
转载 python: android批量多渠道打包
安卓市场太多,一个一个手动打包太累而且容易出错。看过有很多Ant批量打包的,还是想试试不一样的方法。举个例子,如友盟(真心不是给他打广告)的多渠道统计我们只是需要动态的修改这个channel_value,然后打包就可以了。思路1.导出一个未签名的apk包,其中渠道号配置如上图。2.使用apkTool解压apk包
2016-06-03 14:58:52 405
转载 Android Studio加速
Android Studio慢、吃内存!启动时后会立即通过Gradle来sync & build工程。 (1)设置Android Studio a) 禁用插件 File -> Settings... Plugins 去掉一些没有用的插件。 比如:Git Integration、GitHub、Google Cloud Testing、Google Cloud Tools For
2016-06-03 14:50:22 376
转载 Gradle学习系列之十——自定义Plugin
在Plugin中,我们可以向Project中加入新的Task,定义configurations和property等。我们3种方法可以自定义Plugin,这些方法和自定义Task类型的3种方法相似。在接下来的例子中,我们将分别通过这3种方法来创建一个DateAndTimePlugin,该Plugin定义了2个Task,分别用于输出系统当前的日期和时间,另外,我们可以配置日期和时间的输出格式。
2016-06-02 15:46:47 345
转载 Gradle学习系列之九——自定义Task类型
在前面的文章中我们讲到,Gradle本身只是一个架子,真正起作用的是Task和Plugin。要真正了解Task和Plugin的工作机制并熟练运用,学会自定义Task类型和Plugin是大有裨益的。Gradle中的Task要么是由不同的Plugin引入的,要么是我们自己在build.gradle文件中直接创建的。在默认情况下,我们所创建的Task是DefaultTask类型,该类型是一个非常
2016-06-02 15:44:47 314
转载 Gradle学习系列之八——构建多个Project
Gradle为每个build.gradle都会创建一个相应的Project领域对象,在编写Gradle脚本时,我们实际上是在操作诸如Project这样的Gradle领域对象。在多Project的项目中,我们会操作多个Project领域对象。Gradle提供了强大的多Project构建支持。 要创建多Project的Gradle项目,我们首先需要在根(Root)Project中加入名为s
2016-06-02 15:43:58 321
转载 Gradle学习系列之四——增量式构建
如果我们将Gradle的Task看作一个黑盒子,那么我们便可以抽象出输入和输出的概念,一个Task对输入进行操作,然后产生输出。比如,在使用java插件编译源代码时,输入即为Java源文件,输出则为class文件。如果多次执行一个Task时的输入和输出是一样的,那么我们便可以认为这样的Task是没有必要重复执行的。此时,反复执行相同的Task是冗余的,并且是耗时的。为了解决这样的问题,Gr
2016-06-02 15:42:45 292
转载 LeakCanary开源项目(使用及原理github项目文档的翻译)
前两天,Square开源了一个内存泄露自动探测神器——LeakCanary,它是一个Android和Java的内存泄露检测库,可以大幅度减少了开发中遇到的OOM问题,对于开发者来说,无疑是个福音,下面对该库的readme进行简单的翻译:“A small leak will sink a great ship.” - Benjamin Franklin小漏不补沉大船。——本杰明 富兰克林
2016-06-02 15:40:05 709
转载 Gradle学习系列之三——读懂Gradle语法
Gradle是一种声明式的构建工具。在执行时,Gradle并不会一开始便顺序执行build.gradle文件中的内容,而是分为两个阶段,第一个阶段是配置阶段,然后才是实际的执行阶段。在配置阶段,Gradle将读取所有build.gradle文件的所有内容来配置Project和Task等,比如设置Project和Task的Property,处理Task之间的依赖关系等。虽然很多时候我们只需要
2016-06-02 15:20:06 275
转载 Gradle学习系列之二——创建Task的多种方法
Gradle的Project从本质上说只是含有多个Task的容器,一个Task与Ant的Target相似,表示一个逻辑上的执行单元。我们可以通过很多种方式定义Task,所有的Task都存放在Project的TaskContainer中。(1)调用Project的task()方法创建Task在使用Gradle时,创建Task最常见的方式便是:task hello1 {
2016-06-02 15:12:31 346
转载 Gradle学习系列之(一)——Gradle快速入门
和Maven一样,Gradle只是提供了构建项目的一个框架,真正起作用的是Plugin。Gradle在默认情况下为我们提供了许多常用的Plugin,其中包括有构建Java项目的Plugin,还有War,Ear等。与Maven不同的是,Gradle不提供内建的项目生命周期管理,只是java Plugin向Project中添加了许多Task,这些Task依次执行,为我们营造了一种如同Maven般项目构
2016-06-02 14:28:15 309
转载 Gradle Android客户端程序打包(基于gradle 2.10版本验证通过)
http://www.cnblogs.com/Freedoms/p/5171201.html一、前言 目前正在准备从eclipse开发环境向AndroidStudio迁移,提前过去探探路,不出所料,原来gradle脚本果然报错,无法运行,想想索性把本地的gradle一起升级到最新版本,毕竟1.22有点太古老了。 仍然不废话,先上干货。二、准备工作
2016-06-02 14:10:54 293
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人