12、Hander持有对当前线程消息队列MessageQueue和消息循环Looper的引用
13、子线程与子线程直接通信,在一个子线程里面用它的looper.prepare()将线程转换为Looper线程,再新建一个handler,然后全局持有,在另外一个线程发送消息,就传到第一个子线程的messagequeue里了
14、Handler机制的核心原理是线程的threadLocal私有,可以确保线程安全,Looper和消息队列则位于其中;而Handler实例化的时候,是去持有了当前线程中的消息队列和Looper的引用;因此其他线程可以通过这个Handler给那个线程发消息;
15、通过AS右键中的Refactor可以实现快速修改包名;
16、Activity中的保存UI数据方法onSavaInstanceState(),其原理是通知View当中的onSaveInstanceState方法进行自我保存,但是需要注意,源码中规定要是该View没有id,则不保存数据;
17、使用intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)启动activity并不一定会新建任务栈,这要参照启动activity的taskAffinity属性(如果不指定默认为包名)。启动时首先会去寻找taskAffinity属性指定的任务栈,如果没有找到就会新建,如果找到了就会在该任务栈栈内做操作。所以在不指定taskAffinity的情况下,单独使用intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)启动activity,创建的activity都会在与包名相同的那个任务栈中,也就是说不会新建任务栈。
18、Android4.0 以后Application支持ActivityLifecycleCallbacks这样一个回调,可以用来监听应用里的所有Activity的生命周期;
19、Handler有一种构造方法其传参是线程的Looper对象,通过该构造方法可以很方便得到联系目标线程的Handler对象,例如Handler mHandler = new Handler(Looper.getMainLooper);
20、JAVA栈:存储局部变量和方法执行