1、当activity A跳转到activity B的时候,生命周期流程如下图所示

2、当activity 贴换语言或贴换屏幕时,经历的生命周期流程如下

3、消息屏障
(1)、消息屏障的核心作用
阻塞普通消息:
当消息队列中存在消息屏障时,后续的普通同步消息会被暂时阻塞,直到屏障被移除。
(2)优先处理异步消息:
只有标记为 异步(Asynchronous) 的消息会穿透屏障,优先执行。
(3)设置消息屏障的案例
int mBarrierToken=-1;
private void addBarrier(){
try {
Method method=MessageQueue.class.getDeclaredMethod("postSyncBarrier");
method.setAccessible(true);
mBarrierToken= (int) method.invoke(messageQueue);
Message asyncMessage=handler.obtainMessage();
asyncMessage.setAsynchronous(true);
asyncMessage.what=1;
handler.sendMessageDelayed(asyncMessage,0);
Message normalMessage=handler.obtainMessage();
normalMessage.what=2;
handler.sendMessageDelayed(normalMessage,0);
Log.d(TAG,"插入屏障,发送异步消息与普通消息");
}catch (Exception e) {
Log.e(TAG,"没有消息屏障方法,"+e.getMessage());
e.printStackTrace();
}
}
(4)移除消息屏障
private void removeBarrier(){
if (mBarrierToken==-1){
Log.d(TAG,"没有消息屏障");
return;
}
try {
Method method=MessageQueue.class.getDeclaredMethod("removeSyncBarrier",int.class);
method.setAccessible(true);
method.invoke(messageQueue,mBarrierToken);
mBarrierToken=-1;
Log.d(TAG,"移除消息屏障");
}catch (Exception e) {
Log.e(TAG,"移除消息屏障,没有该方法:"+e.getMessage());
e.printStackTrace();
}
}