gpt4 book ai didi

android - BroadcastReceiver 被杀死

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

我有一个小部件,它只使用服务来更新小部件的 RemoteView 的外观。该服务基于由不同注册的 BroadcastReceiver 提供的过滤器启动。当满足其中一个条件时,将调用我的 BroadcastReceiver 的 onReceive() 并开始我的服务。该服务运行然后自行停止。这在一段时间内效果很好。但是,过了一会儿,BroadcastReceiver 就好像被杀死了。我在日志中看到我的进程已经死了,它在 5000 毫秒后重新启动了我的服务。这很好,但问题是我的 BroadcastReceiver 是根据我订阅的事件实际控制服务启动的东西。没有它,当这些事件发生时,例如用户的屏幕打开时,我的服务就不会启动。知道为什么会这样吗?为什么在未调用 unRegister() 时 BroadcastReceiver 会停止接收事件?我不希望我的服务一直启动并运行。我怀疑如果我将服务本身用作 BroadcastReceiver,也会发生同样的行为。感谢您的帮助。

@Override
public void onReceive(Context context, Intent intent)
{
try
{
Log.i(TAG, "Received Broadcast: " + intent.getAction());
Bundle bundle = intent.getExtras();
context.startService(new Intent(
com.mypkg.services.UpdateService.ACTION_UPDATE));
Log.i(TAG, "Service start complete.");
}
catch(Throwable t)
{
JLog.e(TAG, "An occurred during onReceive(): ", t);
}
}

最佳答案

您的应用程序崩溃了,您需要在日志中找到故障转储以了解更多相关信息。

您可以通过首先不需要 registerReceiver() 来使广播接收器免疫——而不是以编程方式声明接收器,而是在您的 AndroidManifest 中声明它,以及一个适当的 Intent 过滤器来定义您的广播希望收到。

关于android - BroadcastReceiver 被杀死,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6264096/

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