
Handler、Looper、MessageQueue消息机制原理
Handler、Looper、MessageQueue消息机制原理Android消息机制是安卓开发中非常重要的,在子线程中处理完I/O、网络请求,使用Handler切回到主线程处理。1、LooperAndroid Looper设计的非常巧妙,使用ThreadLocal实现这个特性。关于ThreadLocal参考另外一篇Thread和ThreadLocal。1.1、主线程Looper一个Applic
分类
深入探讨 Android 系统的核心架构与高级开发,聚焦四大组件(Activity、Service、Broadcast Receiver、Content Provider)的原理、生命周期管理和交互机制。从基础的组件构建与通信,到 Android Framework 层(如 AMS、WMS、PMS)的源码剖析和自定义扩展,提供详尽代码示例、调试技巧和性能优化策略。涵盖 JNI、AIDL、Binde
共 356 篇文章

Handler、Looper、MessageQueue消息机制原理Android消息机制是安卓开发中非常重要的,在子线程中处理完I/O、网络请求,使用Handler切回到主线程处理。1、LooperAndroid Looper设计的非常巧妙,使用ThreadLocal实现这个特性。关于ThreadLocal参考另外一篇Thread和ThreadLocal。1.1、主线程Looper一个Applic

ContentProvider启动流程及原理ContentProvider作为Android的四大组件之一是非常重要的,它的用法参考ContentProvider的用法。本篇主要顺着源码理解ContentProvider的启动和底层原理。1、ContentProvider启动当一个APP启动的时候从ActivityThread的main方法入口加载的过程中就会初始化本应用的ContentProvi

BroadcastReceiver工作流程广播是安卓开发四大组件之一,比较常用。使用起来也很方便,具体使用参考《BroadcastReceiver:广播》。这里顺着源码看看BroadcastReceiver的实现逻辑。1、注册/反注册代码中注册广播只需一行代码即可注册广播:Context中的抽象方法ContextWrapper是Context的实现类,内有mBase成员变量ContextImpl都

Service启动流程分析Service作为Android的四大组件之一非常重要,比起一些后台执行的子线程、异步任务,Service更强大可靠。Service的启动方式有两种一种是直接start启动一个Service,另一种是bind方式绑定一个Service启动。IntentService就是Service,启动方式与普通Service无差。Service及IntentService参考《Ser

Activity启动流程源码分析(旧版)2020年4月19号,周末两天把Activity启动的源码流程捋一遍。Android源码确实太“跳”了,如果对Android整体源码的框架没有整体的概念,可能很容易读着读着“跟丢”代码。重新装上Visio,一遍看源码,一遍捋逻辑图。对代码阅读能力确实有很大提升,想到去年刚进项目的时候,先统计了一下模块的代码,大概十万行,这得看到什么时候啊!其实不需要全部都看
Android Drawable安卓开发中经常用到Drawable设置View的背景,那只是最基本的用法,Drawable可远不止这些,现在就来系统的学习一下Android Drawable系列。1、DrawableDrawable官方定义是“可以绘制的东西”的一般抽象概念。框架中有非常多的Drawable派生类,方便开发者使用:ShapeDrawable、StateListDrawable、La

Toast:前后台弹出Toast不一致?Toast不用再多说了,Android中非常常见的轻量级提醒。用法很简单,但是周末无意中发现一个Toast提示信息和实际代码中的不一样。难道自己又遇到“玄学”问题了?1、Toast源码正常弹出Toast很简单,一行代码的事情。源码如下,第二个参数CharSequence text就是设置Toast显示的文字信息。2、实际Toast但是发现弹出的和显示的不一样
ResolveInfo:查询意图ResolveInfo这个类是通过解析一个与IntentFilter相对应的intent得到的信息。它部分地对应于从AndroidManifest.xml的< intent>标签收集到的信息。PackageManager这个类是用来返回各种的关联了当前已装入设备了的应用的包的信息。你可以通过getPacageManager来得到这个类。1、查询可处理Intent的R

AppWidgetProvider桌面挂件是能直接在桌面上操作的应用入口,通过AppWidgetProvider实现。涉及到RemoteViews和PendingIntent等技术点,这两个参考PendingIntent初识和RemoteView。1、AppWidgetProvider查看AppWidgetProvider的源码发现,AppWidgetProvider的本质就是四大组件之一的Bro

RemoteView:远程ViewRemoteViews,顾名思义,就是远程的View,也就是可以运行在其他进程中的View。RemoteViews常用在Notification和桌面小组件AppWidgetProvider中。Google官方文档:RemoteViews1、支持的组件RemoteViews不支持所有的View类型,也不支持自定义View。ViewGroup:FrameLayout
GestureDetector:手势检测屏幕手势判断略复杂且都是重复工作,好在Android提供了通用的检测手势类GestureDetector,只需要将触摸事件MotionEvent传递给onTochEvent()方法,再由程序员自己实现对应监听方法的具体实现,GestureDetector会自动判断当前触摸手势类型:down,up,scroll,filing等。1、监听接口使用GestureD

VelocityTracker:计算滑动速率速度追踪,计算在手机屏幕上滑动速度,无论是水平还是垂直的速度。Android已经为我们提供了一个类VelocityTracker,借助VelocityTracker可以很方便的计算触摸屏幕的滑动速度。获取VelocityTracker,很简单,通过VelocityTracker类的静态方法obtain()获取。 从源码可以看到是维护了一个Velocity
FileObserver:监听文件/目录变化Android OS提供了一个强大的监听文件目录变化的抽象类:FileObserver。FileObserver对象实例常常用来监听一个文件或者文件夹。当文件夹被监听时,任意子文件或文件夹的访问或修改都会触发事件。注意:FileObserver 不能监听到二级子文件夹或文件的变化。目录获取参考《Android中的各种File目录》。Google官方文档: