Android开发艺术探索读后感-part1

生命周期函数

1.    onStart和onResume区别在于前者Activity还在后台,后者activity才显示到前台。

2.    旧onPause先执行完,新Activity的onResume才会执行。

3.    onPause只做轻量级回收工作

4.    onStop做一些稍微重量级回收工作

5.    onDestory做一些回收工作和最终资源释放

6.    onSaveInstanceState只在Activity即将被销毁,并且有机会重新显示的情况下才会去调用。使用onRestoreInstanceSate恢复。

7.    4大组件都拥有一定的优先级,所以一些后台不适合脱离四大组件而独自运行在后台中,这样进程很容易被杀死,所以通常这种后台工作放在Service中,从而保证进程有一定的优先级,这样就不容易被杀死。

Activity启动模式

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会被调用

IntentFilter匹配规则

1.    过滤条件若包含android.intent.category.DEFAULT这个category,代码中可以不需要指定,是因为Intent默认给它加了android.intent.category.DEFAULT这个category。

2.    Data中的scheme有时候也可以不指定,当然也是有默认值的,URI的默认值为content和file。

3.    如果过滤条件中指定了mimeType,那么你在代码中必须调用setDataAndType,不能先用setData再调用setType,因为这连个方法彼此会清楚对方的值。

IPC(进程间通信)

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)


你可能感兴趣的:(android,开发艺术)