【问题标题】:What exactly does FLAG_RECEIVER_FOREGROUND do when sending ordered broadcasts?发送有序广播时 FLAG_RECEIVER_FOREGROUND 究竟做了什么?
【发布时间】:2018-10-01 15:47:16
【问题描述】:

FLAG_RECEIVER_FOREGROUND 在发送有序广播时究竟做了什么?

它实际上是加速了任何事情,还是只是告诉接收者你没有多少时间去做你的事情,否则我会生气?

上面写着:

如果设置,则在发送广播时允许接收者运行 前台优先级,超时间隔更短。正常期间 广播接收器不会自动吊出 背景优先级。

是什么

具有更短的超时间隔

是什么意思?

【问题讨论】:

    标签: android android-intent android-pendingintent android-broadcast


    【解决方案1】:

    这提高了运行BroadcastReceiverThread 的优先级,这将允许它比低优先级的竞争线程获得更多的CPU 周期。如果有很多竞争线程,这可能会加快速度。

    【讨论】:

    • 好的,所以它实际上加快了速度?在网络断开连接时(当时可能发生了很多事情?)我得到了 25 秒的响应时间(为了简单的任务)来进行有序的广播呼叫,但是当我添加这个标志时它下降到 11 秒。我担心这只是广播接收器的超时或其他原因,但如果我们得到响应正常,情况并非如此,对吧?
    • 是的,它将提高运行 onReceive() 方法的线程的优先级,以便它更快地完成,因为它不再与后台线程竞争 CPU 周期。假设每个BroadcastReceivers 快速处理onReceive(),你应该没问题。我不知道您所说的“如果我们的回复正常”是什么意思
    • 我指的是 pendingResult().setResultCode(Activity.RESULT_OK),并且能够从另一端检索它。奇怪的是我得到了它,但在 25 秒后!以为到那时有些事情会超时。长话短说。我担心我处理订购的广播的方式有问题,因为他们可能需要很长时间才能得到回应。当我设置标志时,它下降了,但仍然长达 11 秒......
    • 当你发送一个有序广播时,它会一个接一个地依次发送给所有感兴趣的接收者。你确定只有一个注册接收者吗?
    • 另外,在有序广播中,如果其中一个接收器超时,我认为这对状态没有任何影响。它只是调用列表中的下一个
    猜你喜欢
    • 2012-07-23
    • 2016-09-10
    • 2023-03-15
    • 2012-10-17
    • 2021-06-04
    • 1970-01-01
    • 2018-07-30
    • 2019-10-06
    • 2021-01-01
    相关资源
    最近更新 更多