gpt4 book ai didi

android - 永久广播接收器

转载 作者:行者123 更新时间:2023-11-30 05:05:43 26 4
gpt4 key购买 nike

一个应用程序,让我们称之为应用程序A,安装在我的手机上会产生非常有趣的数据。我无法控制应用程序 A,但开发人员非常友善,可以在本地广播有趣的信息,以便其他应用程序(如我正在构建的应用程序,应用程序 B)可以使用这些数据由其他应用程序生成。

我正在通过 MainActivityonResume() 中的以下代码注册一个 BroadcastReceiver:

registerReceiver(new CustomBroadCastReceiver, new IntentFilter("com.intent.filter.DATA"));

这工作得很好,直到我的应用程序被强制停止或被 Android 停止(大概是为了保持电源/释放内存?)。

但是,应用程序 A 日以继夜地产生数据。根据此数据,应用程序 B 计算进一步的结果,并应该在读数方向错误时立即发出警报。应用程序 B 中的 BroadcastReceiver 必须能够在任何时间点发出警报。

目前最好的做法是让 BroadcastReceiver 尽可能长时间地保持 Activity 状态(甚至可能在用户强行停止(滑动)应用程序时幸存下来)?

编辑:几个月后,我发现我的三星手机已将我的应用程序放入省电应用程序列表中,它会定期强制终止这些应用程序以节省电量。确保您的应用程序不在您自己手机上的类似列表中。

最佳答案

您需要在您的 list 中注册您的接收器,而不是以编程方式。看: https://developer.android.com/guide/components/broadcasts#manifest-declared-receivers

但是,如果您以 Oreo+ 为目标,您将无法再这样做。应用程序 A 需要明确调出您的包,以便应用程序 B 的 list 中声明的​​接收器接收广播。你可以在这里阅读相关内容: https://developer.android.com/about/versions/oreo/android-8.0-changes#back-all

这不是您的应用共享数据的好方法(因此 Google 正在逐步淘汰它)。每次在另一个应用程序中发生某些事情时都必须将您的应用程序加载到内存中,这是低效的。想象一下,数十或数百个应用程序为各种广播方式做同样的事情,这对电池生命周期意味着什么。

更好的方法是让应用 A 在内容提供程序中公开数据,然后您的应用唤醒(很少)并提取数据。

关于android - 永久广播接收器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54637719/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com