Android读书笔记
读书笔记总结、整理
wei.zheng
这个作者很懒,什么都没留下…
展开
-
11.关于线程与线程池
1.Android中的线程形态AsyncTask轻量级异步任务类,底层实现为Thread+Handler。HandlerThreadHandlerThread继承自Thread,run方法内会创建Looper,并开启消息循环。public class HandlerThread extends Thread { ... @Override publ...原创 2020-02-29 22:25:45 · 106 阅读 · 0 评论 -
10.消息机制(下):分析Looper
Looper起到消息循环的作用,一直循环查看MessageQueue中是哟有新的Message,有则立刻处理,否则就阻塞在这里。主线程不需要主动初始化Looper,ActivityThread在创建的时候就初始化了Looper子线程创建Handler,需要主动初始化Looper new Thread() { @Override ...原创 2020-02-29 15:23:15 · 193 阅读 · 0 评论 -
10.消息机制(中):分析MessageQueue
android消息机制主要是指Handler的运行机制,需要MessageQueue以及Looper的支撑。开发中,常用于更新UI。UI控件不是线程安全的,所以采用单线程(主线程)处理UI操作android中主线程,即UI线程,就是ActivityThread (其创建时会初始化Looper)1.MessageQueueMessageQueue消息队列,顾名思义,最主要的就是两个方法:...原创 2020-02-29 11:47:57 · 443 阅读 · 0 评论 -
10.消息机制(上):分析Handler
android消息机制主要是指Handler的运行机制,需要MessageQueue以及Looper的支撑。开发中,常用于更新UI。UI控件不是线程安全的,所以采用单线程(主线程)处理UI操作android中主线程,即UI线程,就是ActivityThread (其创建时会初始化Looper)1.HandlerHandler的作用就是发送 & 接收消息 (android.os....原创 2020-02-29 11:46:39 · 122 阅读 · 0 评论 -
8.Window与WindowManager
1.概述所有视图都通过Window来呈现,包括Activity/Dialog/Toast等,Window是View的直接管理者;WindowManager是外界访问Window的入口;Window的具体实现在WindowManagerService中,WindowManage与WindowManagerService的交互式IPC过程。2.关键类图3.重点关注WindowManag...原创 2020-03-01 09:23:37 · 168 阅读 · 0 评论 -
6.关于Drawable
1.简单介绍android.graphics.drawable.Drawable是一个可以在canvas上绘制的抽象概念;通常用XML来定义,也可以用代码来创建(更复杂);特点:比View成本低,非图片类型的Drawable占用空间小/** * A Drawable is a general abstraction for "something that can be drawn."...原创 2020-02-23 10:58:47 · 87 阅读 · 0 评论 -
5.关于RemoteViews
1.引入RemoteViewsandroid.widget.RemoteViews为一个View结构,实现了Parcelable接口,运行在系统进程SystemServer中,所以第三方应用是以跨进程通信的方式来更新RemoteViews. (简单理解,第三方应用将RemoteViews通过Intent传递给系统进程,系统进程去加载并更新其界面。)public class RemoteVi...原创 2020-02-23 09:22:39 · 97 阅读 · 0 评论 -
4.关于View的绘制 (下):draw
1.draw过程就是将view绘制到屏幕上view的drawpublic void draw(Canvas canvas) { final int privateFlags = mPrivateFlags; mPrivateFlags = (privateFlags & ~PFLAG_DIRTY_MASK) | PFLAG_DRAWN; ...原创 2020-02-22 16:50:13 · 128 阅读 · 0 评论 -
4.关于View的绘制 (中):layout
1.Layout过程View的layoutview的layout方法用来确定view本身的位置public void layout(int l, int t, int r, int b) { ...}先通过setFrame来设定4个定点位置,view在父容器中位置就确定来layout内部调用onLayout, 用于父容器确定子元素位置(View未实现onLayout, 需要自...原创 2020-02-22 16:36:00 · 180 阅读 · 0 评论 -
4.关于View的绘制 (上):measure
1.关于MeasureSpec1.引入的目的?用于View的测量,view.measure() 方法的两个参数分别为宽/高MeasureSpecpublic final void measure(int widthMeasureSpec, int heightMeasureSpec)2.具体定义MeasureSpec为View的静态内部类由SpecMode(前 - 高2位) + S...原创 2020-02-22 13:05:19 · 104 阅读 · 0 评论 -
3.View的事件体系 (下):事件分发机制
1.什么是事件分发?分发的对象:MotionEvent事件分发:点击事件产生后,如何传递到某个具体的view2.涉及到的3个方法public boolean dispatchTouchEvent(MotionEvent ev)dispatchTouchEvent表示是否消耗当前事件,如果能传递到当前view,则此方法一点会调用。public boolean onInterceptTo...原创 2020-02-16 13:26:35 · 114 阅读 · 0 评论 -
3.View的事件体系 (上):必须了解的基础知识
1.为什么要了解Viewandroid.view.View界面层控件的一种抽象,是android系统中所有控件的基类。2.MotionEvent与TouchSlopMotionEvent :手指接触屏幕传递的事件对象对应有3个事件类型:ACTION_DOWNACTION_MOVEACTION_UP获取坐标:getX/getY 相对当前View左上角的x和y坐标getRaw...原创 2019-12-14 17:17:17 · 113 阅读 · 0 评论 -
2.关于进程间通信(下):再说Binder
android系统进程间通信的底层原理就是Binder机制。参考aidl文件生成的java代码,可以知道Binder机制涉及到两个重要的类。1. IInterface接口所有可以在Binder传输的接口都需要继承IInterface接口。package android.os;public interface IInterface { IBinder asBinder();}...原创 2020-04-04 20:09:09 · 250 阅读 · 0 评论 -
2.关于进程间通信(中):IPC汇总
1.有几种IPC方式使用BundleActivity,Service,Receiver 3大组件都支持Intent中传递Bundle;Bundle已经实现了Parcelable接口。bundle.putSerializable(“person”, person);intent.putExtras(bundle);使用文件共同读写一个文件,达到传递数据的目的。此方式只适用...原创 2019-12-14 09:33:43 · 89 阅读 · 0 评论 -
2.关于进程间通信(上):引入多进程
1.为什么需要进程间通信?业务场景:不同应用间交互数据技术场景:增加应用可使用的内存空间,Android系统对每个应用可使用的内存做了限制;因为一些特殊原因有些模块需要跑在单独的进程。2.如何多进程通常情况下,不同的app是跑在不同的进程中,这里主要针对一个app如何跑在多个进程。在业务开发层面,只有一个方法:即在AndroidManifest.xml文件中给4大组件配置and...原创 2019-12-13 09:47:27 · 139 阅读 · 0 评论 -
1.关于Activity (下) :LaunchMode
1.四种启动模式介绍Standard 标准SingleTop 栈顶复用如果任务栈顶存在,则复用,调用onNewINtentSingleTask 栈内复用需要taskAffinity属性配合使用如果任务栈内存在,则复用,调用onNewINtentSingleInstance 单实例...原创 2019-11-25 09:52:52 · 114 阅读 · 0 评论 -
1.关于Activity (上) :生命周期
1.正常情况下的生命周期 onCreateonStart - 可见、在后台onResume - 可见、在前台、可以交互onPause - 不能执行耗时操作,影响新的activity的显示onStoponDestroy2.onStart与onResume,二者有什么不同?onStart 从可见的角度描述activity,此时没有在前台,不能交互操作onResume 从...原创 2019-11-25 09:49:38 · 94 阅读 · 0 评论