IdleHandler是什么?
IdleHandler是什么?看MessageQueue源码的时候发现一个IdleHandler,但它并不是Handler,直译过来的话应该叫“闲置处理器”。一般开发中不会用到,了解一下Android框架中的源码,以免以后有骚操作需要说不定会用上。1、IdleHandler定义IdleHandler是定义在MessageQueue类中的一个接口:从Android源码的注释我们可以初步看到这是一个闲
分类
深入探讨 Android 系统的核心架构与高级开发,聚焦四大组件(Activity、Service、Broadcast Receiver、Content Provider)的原理、生命周期管理和交互机制。从基础的组件构建与通信,到 Android Framework 层(如 AMS、WMS、PMS)的源码剖析和自定义扩展,提供详尽代码示例、调试技巧和性能优化策略。涵盖 JNI、AIDL、Binde
共 356 篇文章
IdleHandler是什么?看MessageQueue源码的时候发现一个IdleHandler,但它并不是Handler,直译过来的话应该叫“闲置处理器”。一般开发中不会用到,了解一下Android框架中的源码,以免以后有骚操作需要说不定会用上。1、IdleHandler定义IdleHandler是定义在MessageQueue类中的一个接口:从Android源码的注释我们可以初步看到这是一个闲

Android坐标系Android自定义View开发,首先必须要对Android中的坐标体系非常熟悉。它不同于我们以前数学中所学的笛卡尔坐标系:1、绝对坐标系Android中定义整个物理屏幕左上角为原点 O,包括状态栏在内。X轴水平向右,Y轴竖直向下。2、视图坐标系Android中的另一个坐标系叫做视图坐标系,不是参照绝对坐标系,而是View参照父控件。View中有多个获取坐标及控件大小相关的方法

Handler中Callback的作用通常创建Handler的时候为了能够让Handler处理我们发送的Message,往往开发者选择通过匿名类重写handleMessage()方法源码中注释也提到,这是留给开发者的一种思路:在创建Handler的几种方法一文中,会发现构造方法中有一个参数是Callback,其实是框架定义的一个接口。在实例化Handler时可以作为参数使用。在Handler、Lo

创建Handler的几种方法Android开发中常常用到Handler,通常开发者通过构造函数直接 new 一个Handler使用。还有哪几种方法可以获取到实例?1、构造方法通过Handler类的构造方法,我们可以获取到Handler实例。构造方法中有一个Callback回调接口,它的作用详见Handler中Callback的作用。1.1、废弃方法在API 30的源码中下面这两个方法已经被框架标记
Handler消息延迟原理开发过程中经常会使用Handler设置一些延时任务,Handler是如何实现消息延迟的呢?在Handler、Looper、MessageQueue消息机制原理一文应该也有所了解其原理,这里单独剖析一遍。1、post系列方法提到消息延迟,第一时间想到的就是Handler的postDelayed()方法。查看API 30的Handler源码,一共有如下七个post任务的方法:
Android权限检测申请源码流程分析Android系统的权限开发用起来很方便,知识点不多,详见Android Permission 权限总结。但是它的系统校验检测机制比较复杂,从framework层PackageManager、PermissionManager、PermissionManagerInternal到系统服务PackageManagerService、PermissionManag

Android Permission 权限总结是时候系统的总结一遍Android权限:版本区别、权限级别、权限检测、权限申请、自定义权限等方面。权限相关源码分析详见Android权限检测申请源码流程分析。1、权限 Permission权限是Android的一种安全机制,主要用来保护用户、应用的数据安全。Android权限全部定义在framework/base/core/res/AndroidMan
绑定适配器随着DataBinding进一步学习,发现其实就是将一部分原本属于代码中的逻辑放到了布局中,并且封装了很多重复的操作,提高开发效率。如果不加以限制,原本简洁的布局会更加复杂。要做到恰到好处分担一些简单的业务处理,布局不要承担过重的业务逻辑。今天学习一下DataBinding中一个强大的功能:BindingAdapter绑定适配器。在布局中通过UI属性的设置,完成图片加载、数据处理等复杂需

可观察数据和双向数据绑定Jetpack中的库相互结合使用才能发挥更大用处。想到之前了解过的ViewModel和LiveData,结合目前学习的DataBinding能否让界面自动随着数据变化而更新:通过上面的方法是可以的,但是还可以更简洁!来看看DataBinding中的可观察数据绑定及双向数据绑定。可以简化很多繁琐的数据获取同步操作:比如当一个View发生变化,同步改变Model中的数据,并且同
DataBinding(四):布局include和ViewStub在学习DataBinding绑定语法的时,忽略了布局中的两个特殊元素:include复用布局和ViewStub懒加载布局。对于这两种该如何在布局中使用DataBinding呢?1、include单独啰嗦记录一下DataBinding中的include传值方法。1.1、定义复用布局需要将之前定义的复用的布局也转换成data bindi
DataBinding(三):布局绑定类写好我们的DataBinding布局之后如何使用呢?如何初始化在<data />中定义的变量呢?1、绑定布局已经将原来的XML布局转换成DataBinding支持的数据绑定布局,接下来就是将它设置给我们的Activity、Fragment等需要加载布局的地方。1.1、Activity中绑定布局在使用DataBinding之前通过setContentView(

DataBinding(二):数据绑定语法接着上一回DataBinding(一):开启数据绑定,相比起原先的传统布局文件,多了一个<data />子标签,这里面大有文章,需要单独一篇来详细了解一下数据绑定相关的语法。按照相关程度分了一下1、变量定义1.1、variable变量variable声明布局中用到的变量name以及变量类型type,放在<data />标签节点下。(提一句,为什么没有定义常

DataBinding:开启数据绑定记得上大学的那会自学接触过Android,看Android Mars录制的安卓编程视频(网上很火的),印象最深的就是不停的敲findViewById()。现在2020年了还在用findViewById()吗?1、何为DataBinding?参考 Guides > Data Binding Library">Android Developers > Guides

ContentProvider笔记ContentProvider作为四大组件很常用,但是相关代码一写完少则半年都不会变动,不会天天四大组件来回折腾。好记性不如烂笔头,简要记录一下ContentProvider的用法。1、ContentProviderContentProvider用来在多个应用程序之间共享数据,涉及到Binder跨进程传输那部分咱先不提。你要在同一个APP内部也使用ContentP
了解LiveData前段时间学习ViewModel的时候就提到LiveData,单独的ViewModel并不能发挥它的全部“实力”。所以需要继续学习LiveData,善于实践结合ViewModel完成MV的解耦。1、LiveData简介LiveData组件是什么?有哪些优势?这些在Google的官网都能找到答案。详见 Guides > LiveData Overview">LiveData Ove