Piasy

NEVER STOP

安卓通知栏消息点击启动Activity时“Intent flag残留”问题

今天开发的过程中偶遇一个系统的bug:响应通知栏消息,启动一个新的Activity,之前代码写得有问题,为intent设置了Intent.FLAG_ACTIVITY_CLEAR_TASK这个flag,删除这行代码重新安装之后,竟然发现修改不起作用,启动Activity的行为依然是清除了之前所有的Activity,疑惑之余,对这个问题进行了进一步的测试,总结成此文。 功能需求 首先说一下响应...

Android Runtime Permission测试

Android 6.0引入了Runtime Permission模型,一方面用户不必在安装APP时便授予所有权限,另一方面,对于第三方ROM,APP自身也能方便地判断是否有某项权限了。在本文中,我将以读取通讯录为例对运行时权限进行一次全面的测试,完整代码可以在Github下载。 快速使用运行时权限 在AndroidManifest.xml中声明权限,就算是运行时权限,这一步也是不能忘...

手把手OkBuck教程:应用到AndroidTDDBootStrap项目

【注:本文信息已经过时,请看续章】在本文中,我将一步一步手把手记录如何在AndroidTDDBootStrap项目中使用OkBuck插件,使得AndroidTDDBootStrap支持BUCK构建,体验其畅快淋漓! 第一步,应用插件 按照OkBuck中文文档的步骤,根据本工程的结构,在/build.gradle中加入11行配置,配置后/build.gradle是这样的: ... buil...

12行配置从Android Studio + Gradle构建体系开始使用facebook的BUCK构建体系

12行配置从Android Studio + Gradle构建体系迁移到facebook的BUCK构建体系,且保持两者同时兼容使用,编码使用AS,享受安卓最强大IDE的功能,打包、安装、测试用BUCK,享受安卓最快构建系统的畅快淋漓,两者互不干扰。从此妈妈再也不用担心我在编译安卓工程时睡着了,而且真的只要12行! 详情

APP启动加速,以及使用FSA来处理状态转换避免Activity state loss

随着APP的不断开发,启动时(Application类的onCreate函数中)需要做的事情越来越多,这将导致APP冷启动(杀死进程后的第一次启动)变慢,有分析表明,APP冷启动时间大于2s时,大部分用户将失去耐心。 提升APP启动速度 其实并不是所有的事情都需要在Application类的onCreate函数中执行,例如一些第三方库的初始化,可以专门增加一个SplashActivity来...

深入Java深浅拷贝、immutable、unmodifiable

建议:函数调用的时候,调用方传给被调用方的参数,如果在调用之后还会被修改,那么调用方应该给被调用方传一个当时的拷贝,深拷贝,否则将会导致潜在的bug: 可能被调用方是异步执行的,如果调用函数之后,参数发生了修改,那么被调用方执行的时候,看到的就是被修改之后的数据,这将导致严重、隐蔽、非必现的BUG,而这种BUG是最让人头疼的 可能被调用方会修改传入的参数,这就导致函数执行完毕之后...