Android 消息分发机制

消息机制 就是 Handler 的运行机制以及 Handler 所带的 MessageQueue 和 Looper 的工作过程。这三个是一个整体,只不过我们经常用到 Handler ,所以也称为 Handler 消息机制。 Handler 主要工作就是将一个任务切换到某个指定的线程中去执行。 主要解决 子线程无法直接访问 UI 线程的问题。 创建 Handler 的两种方式 构造函数中传递一个 Callback 对象 创建一个 Handler 子类,重写...

阅读更多

扫盲系列 - buildscript 和 allprojects 的区别

通过 AndroidStudio 创建一个项目,就会生成两个 gradle 文件,一个位于项目根目录下面,一个位于 app 下面, app 下面的 gradle 文件我们还经常修改,添加依赖库什么的,可是根目录下面的就不怎么修改了, 这里面有两个感觉很像, buildscript 和 allprojects 什么意思啊,中间还都有 repositories 这个。 buildscript { //声明 gardle 脚本自身所需要使用的资源,包括依赖项、...

阅读更多

Android 四大组件之 Broadcast

类名解释 AMS 详情参照 Android 四大组件之 Activity ReceiverDispatcher 广播分发者,同时保留 BroadcastReceiver 和 InnerReceiver. ReceiverDispatcher. InnerReceiver InnerReceiver 继承于IIntentReceiver.Stub。 IIntentReceiver 是一个 Binder 接口,所以 InnerReceiver 是一个 Binde ...

阅读更多

工作填坑 - 水平方向的 RecycleView 嵌套竖直方向的 RecycleView 滑动冲突解决办法

项目中用到了 RecycleView 嵌套,水平方向嵌套竖直方向的,结果发现一个问题,就是水平方向滑动后,直接竖直滑动,往往第一下竖直方向没响应,要等到第二下甚至第三下竖直方向的 RecycleView 才能响应滑动事件,可是我们交互要求如果正在水平滑动,突然竖直滑动,竖直方向的 RecycleView 是要立即响应的,这就有点意思了,为啥会出现这种情况呢,查看源码才知道,在 RecycleView 的 onInterceptTouchEvent() 中做了处理 ...

阅读更多

Android 四大组件之 Service

类名解释 AMS 详情参照 Android 四大组件之 Activity ActivityService 辅助 AMS 进行 Service 管理的的类,包括 Service 的启动,绑定和停止等 ServiceRecord 一个 Service 的记录类,可以理解为 Service 的栈吧。 还是之前的原则,能上图绝不贴代码 Service 的工作流程 startService() 都知道, startService() 是 Context 中的方法,而 C...

阅读更多

Android 四大组件之 Activity

类名简介 AMS ActivityManagerService(简称AMS)继承自ActivityManagerNative(简称AMN),而 AMN 继承自 Binder 并实现了 IActivityManager 这个 Binder 接口,因此 AMS 也是一个 Binder ,它是 IActivityManager 的具体实现。 由于ActivityManagerNative.getDefault()其实是一个 IActivityManager 类型的 B...

阅读更多

Android 四大组件 概况

共性 注册方式上: 除了 BroadcastReceiver ,其他三种组件必须在Android-Manifest中注册, BroadcastReceiver ,即可以在Android-Manifest中注册,也可以通过代码注册 调用方式上: Activity, Service 和 BroadCastReceiver 需要借助 Intent ,而 ContentProvider 无需借助Intent 用户感知上: 除了 Activity ,其他三个组...

阅读更多

Android 性能优化 -- APK 瘦身

想了解 APK 打包流程的,可以参考这篇文章。扫盲系列 - APK 打包流程 APK瘦身 应用安装包大小对应用使用没有影响,但应用的安装包越大,用户下载的门槛越高。 减小安装包大小可以让更多用户愿意下载和体验产品。 代码混淆 在 gradle 使用 minifyEnabled 进行 Proguard 混淆的配置,可大大减小 APP 大小,它包括压缩、优化、混淆等功能。 android { buildTypes { release { ...

阅读更多