![](https://img-blog.csdnimg.cn/20190616234443123.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
《Android开发艺术探索》笔记
笔记
矢口
这个作者很懒,什么都没留下…
展开
-
《Android开发艺术探索》笔记目录
该笔记以《Android开发艺术探索》为基础,结合Android 9.0代码和官方文档,修正了原书中表述不明确和过时的部分,同时加入了大量的个人理解。 13章,14章,15章是总结性的章节,没有列出,建议直接看原书。 Android开发艺术探索 - 第1章 Activity的生命周期和启动模式 Android开发艺术探索 - 第2章 IPC机制 Android开发艺术探索 - 第3章 View的事...原创 2019-06-18 12:12:20 · 676 阅读 · 0 评论 -
Android开发艺术探索 - 第1章 Activity的生命周期和启动模式
第1章 Activity的生命周期和启动模式 1. 生命周期 基本情况 onStart和onStop根据是否可见被回调;onResume和onPause根据是否在前台被回调。实际使用中没有其他区别。 onRestart当由不可见变为可见时回调。 由A启动B,在A的onPause执行完之前,B不会被创建。所以在onPause中不能执行过多的操作。 异常情况 设备配置改变或者内存不足时,Act...原创 2019-06-17 16:52:24 · 185 阅读 · 0 评论 -
Android开发艺术探索 - 第2章 IPC机制
1.多进程模式 给四大组件指定android:process。命名方式:“:”开头,该process将是application的私有进程,最终的process名会加上package前缀;小写字母开头,该process将是全局进程,多个application可以共享该process。 多进程造成的问题: 静态成员和单例模式失效 线程同步机制失效 SharedPreferences可靠性下降 App...原创 2019-06-17 16:53:57 · 252 阅读 · 0 评论 -
Android开发艺术探索 - 第3章 View的事件体系
1.基础知识 位置参数: left/top/right/bottom是左上和右下的原始坐标位置,不会改变。 translation*是相对于left和top的偏移量,默认是0。 x/y是左上角当前(所看到的)的坐标。 x = left + translationX y = top + translationY MotionEvent:触摸事件 ACTION_DOWN/ACTION_...原创 2019-06-17 16:55:54 · 227 阅读 · 0 评论 -
Android开发艺术探索 - 第4章 View的工作原理
1.ViewRoot和DecorView ViewRoot对应ViewRootImpl,实现了DecorView和WindowManager之间的交互。 View的绘制流程从ViewRoot#performTraversals开始,经过measure、layout、draw最终将一个View绘制出来: 例,measur过程:performMeasure->measure->onMea...原创 2019-06-17 16:58:12 · 190 阅读 · 0 评论 -
Android开发艺术探索 - 第5章 理解RemoteViews
1.RemoteViews应用 RemoteViews remoteViews = new RemoteViews(getPackageName(), R.layout.layout_notication); remoteViews.setTextViewText(R.id.text, "text"); remoteViews.setImageViewResource(R.id.image, R....原创 2019-06-17 16:58:49 · 210 阅读 · 0 评论 -
Android开发艺术探索 - 第6章 Android的Drawable
Drawable表示了可绘制对象。 getIntrinsicWidth/getIntrinsicHeight获取固有的宽高。对于BitmapDrawable来说,该方法返回其图片的宽高,对于shape类型的,默认返回-1。显示在View中的drawable会被拉伸或缩小为View的大小,固有宽高和其最终显示在View中的宽高不一定相等。 一部分Drawable中用到的level的范围是0-1000...原创 2019-06-17 17:01:22 · 257 阅读 · 0 评论 -
Android开发艺术探索 - 第7章 Android动画深入分析
Animation resources Property Animation Overview 1.View动画 Tween补间动画 四种动画效果,平移TranslateAnimation、缩放ScaleAnimation、旋转RotateAnimation和透明度AlphaAnimation,xml中对应四种标签的定义方式(res/anim/xxx.xml):<?xml version=...原创 2019-06-17 17:03:00 · 254 阅读 · 0 评论 -
Android开发艺术探索 - 第8章 理解Window和WindowManager
一些说明:ref Window和View很多时候会彼此混杂,概念模糊不清。比如windowManager.addView实际上将View添加到WM对应的Window当中,并不是添加了一个新的Window,但是为其指定的LayoutParams的type含义却是Window的类型。 Window的存在意义,实际上是将View的创建、ViewRootImpl和View交互的操作,从Activity/...原创 2019-06-17 17:03:50 · 333 阅读 · 0 评论 -
Android开发艺术探索 - 第9章 四大组件的工作过程
1.Activity启动过程 ref 从Activity的startActivity方法开始。startActivity的多个重载方法,最终都会调用startActivityForResult方法。mParent代表的是ActivityGroup,API 13之前用于在一个界面中嵌入多个Activity,之后被Fragment替代,所以这里一般为null。该方法中主要调用了Instrumentat...原创 2019-06-17 17:04:34 · 261 阅读 · 0 评论 -
Android开发艺术探索 - 第10章 Android的消息机制
1.概述 Handler的作用是将一个任务切换到指定的线程去执行。 UI操作只能在主线程进行,这个限制是在ViewRootImpl#checkThread中实现的: void checkThread() { if (mThread != Thread.currentThread()) { throw new CalledFromWrongThreadException( ...原创 2019-06-17 17:06:33 · 197 阅读 · 0 评论 -
Android开发艺术探索 - 第11章 Android的线程和线程池
Android的主线程主要是运行四大组件以及处理其与用户的交互;而子线程用于执行耗时任务,如网络请求,I/O操作。 1.Android中的线程形态 AsyncTask 在线程池中执行后台任务,其封装了Thread和Handler,通过execute方法执行AsyncTask。关键方法: onPreExecute:在执行execute方法的线程中运行,一般为主线程,用于执行在开始异步任务之前的一...原创 2019-06-18 11:54:51 · 720 阅读 · 0 评论 -
Android开发艺术探索 - 第12章 Bitmap的加载和cache
1.Bitmap高效加载 加载Bitmap的方法:使用BitmapFactory的decodeFile/decodeResource/decodeStream/decodeByteArray可以分别从,文件/资源/输入流/字节数组中加载一个Bitmap。decodeFile/decodeResource会间接调用decodeStream。 通过采样率控制加载出的Bitmap的大小,以提高加载效率:...原创 2019-06-18 11:55:01 · 337 阅读 · 0 评论