1. onStart和onResume区别在于前者Activity还在后台,后者activity才显示到前台。
2. 旧onPause先执行完,新Activity的onResume才会执行。
3. onPause只做轻量级回收工作
4. onStop做一些稍微重量级回收工作
5. onDestory做一些回收工作和最终资源释放
6. onSaveInstanceState只在Activity即将被销毁,并且有机会重新显示的情况下才会去调用。使用onRestoreInstanceSate恢复。
7. 4大组件都拥有一定的优先级,所以一些后台不适合脱离四大组件而独自运行在后台中,这样进程很容易被杀死,所以通常这种后台工作放在Service中,从而保证进程有一定的优先级,这样就不容易被杀死。
1. 一般Activity的启动都依赖于activity所属的任务栈,但如果activity启动通过Application Context,那么区别于其它的方式,你需要指定FLAG_ACTIVITY_NEW_TASK标记位,这样它会创建一个新的任务栈,类似于singleTask的启动模式。
2. SingleTask 如果activity已存在在某个栈中,会将那个任务栈调出,并且将指定的activity调至栈顶,在它之上的activity会被移除出栈(onNewIntent会被调用)。如果activity不存在在任何栈中,则会重新创建一个任务栈,并且将这个activity放入到该栈中。
3. SingleInstance singeTask的加强版,除了之前说的。只能独立位于任务栈中(如果不是独立的就会创建新的任务栈)。当然由于任务栈内复用特性,如果已经创建一个独立栈,则不会创建新的Activity。
4. FLAG_ACTIVITY_ NEW_TASK =singleTask
5. FLAG_ACTIVITY_SINGLE_TOP =singleTop
6. FLAG_ACTIVITY_CLEAR_TOP 指定Activity之上的Activity会被移除出栈(onNewIntent会被调用)
1. 过滤条件若包含android.intent.category.DEFAULT这个category,代码中可以不需要指定,是因为Intent默认给它加了android.intent.category.DEFAULT这个category。
2. Data中的scheme有时候也可以不指定,当然也是有默认值的,URI的默认值为content和file。
3. 如果过滤条件中指定了mimeType,那么你在代码中必须调用setDataAndType,不能先用setData再调用setType,因为这连个方法彼此会清楚对方的值。
1. Android指定进程方式android:process。通常两种:
a) :remote 冒号这种声明方式是一种简洁写法,相当于包名:remote,其次还有一种特殊含义,就是属于当前应用的私有进程,其他应用的组件不可以和它跑在同一进程中。
b) com.xxxx.xx2.remote 其他应用可以通过ShareUID方式跑在同一个进程中。
2. Android会给每个进程fork一个虚拟机实体。
3. Android中通过Binder来实现进程间通信
4. 多进程的问题:
a) 静态成员和单例模式完全失效
b) 线程同步机制完全失效
c) SharePreferences的可靠性下降。不支持两个进程同时执行写操作。
d) Application会被多次创建。(因为一个进程一个虚拟机,就会有多个Application)