Activity生命周期流程及消息屏障

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();

    }

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一、Android 基本常识 1、写10 个简单的linux 命令 mkdir 创建文件夹 rmdir 删除文件夹...
    王培921223阅读 4,071评论 0 0
  • DNS 记录类型深度解析 1. A 记录(Address Record) 核心作用:将域名直接映射到IPv4 地址...
    网安秘谈阅读 431评论 0 0
  • 中原焦点团队第33期中级班学员坚持分享第 1145天 总约练152次 来访者109 观察员38 咨询师5 感恩与难...
    被阳光照耀下的自己阅读 39评论 0 0
  • 游戏软件开发的黄金时代:技术演进与创作方法...
    糖诗诗阅读 451评论 0 0
  • 今天是个特别的日子,因为今天我要值班,老婆也要上班,今天是儿子在家自己生活的一天。早上给他蒸了头天老婆做好的面包,...
    幸福忙碌的80后阅读 472评论 0 0

友情链接更多精彩内容