美文网首页
Sticky Broadcast被禁用的原因

Sticky Broadcast被禁用的原因

作者: None_Ling | 来源:发表于2019-07-31 17:14 被阅读0次

    背景

    在看9.0源码的时候,偶然发现ContentWrapper.sendStickyBroadcast被打上了Deprecated标签。发现从API Level 21之后,就被弃用了。

    SendStickyBroadcast

    StickBroadcast的特点

    • ActivityManagerService会一直保存最新的StickyBroadcast在System_Server进程中
    • 当有IntentFilter匹配的Receiver注册时,会将最新的Broadcast立即发送给Receiver接收该广播
    • 所有进程在注册的时候,都会收到该广播(不仅仅只是发送者进程能收到,其他进程也可以收到)
    • 所有进程都可以更新StickyBroadcast
    • 发送者需要声明android.permission.BROADCAST_STICKY权限
    • 只有当调用removeStickyBroadcast时,才会被清除

    Sticky的广播会被所有进程接收。例如在用户A进程的某个Activity在onResume中注册相关的Receiver,在onPause中注销了相关的Receiver。B进程的某个Activity也进行了同样的操作,那么A和B进程的Activity在回到Resume状态时,就会接收到该广播。

    原因

    removeStickyBroadcast可知,这一系列的api都被弃用了。

    原因是因为这一系列函数簇没有安全性,每个用户都可以访问,每个用户都可以修改,有很大的安全风险。所以官方禁用掉了,推荐使用其他的机制来替代这种方案。

    removeStickyBroadcast

    相关文章

      网友评论

          本文标题:Sticky Broadcast被禁用的原因

          本文链接:https://www.haomeiwen.com/subject/fmjtdctx.html