gpt4 book ai didi

android - 服务中的 BroadcastReceiver 不接收广播 Android

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:33:43 24 4
gpt4 key购买 nike

我有这个应用程序,用户在其中更新 Activity 中的某些变量,并且此 Activity 使用 BroadcastReceiver 将新变量传递给 IntentService。但是, IntentService 中的 BroadcastReceiver 似乎没有接收到广播。这是服务中用于创建广播​​接收器的代码

protected class UpdateReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent){
Log.d("receiver", "Got message: ");
//state=3;
//Toast.makeText(context, "got it", Toast.LENGTH_SHORT).show();
}
};

这是在 onHandle() 函数中注册接收器的代码

IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("updates");
UpdateReceiver lol = new UpdateReceiver();
DetectService.this.registerReceiver(lol, intentFilter);

最后是从 Activity 中发送广播的代码

Intent broadcastIntent = new Intent();
broadcastIntent.setAction("updates");
HomePageActivity.this.sendBroadcast(broadcastIntent);
Log.d("sender", "send msg");

当我将接收器放在与广播部分相同的 Activity 中时,它可以工作,但当我将它放在 IntentService 中时却不行。请帮忙!

在另一个相关说明中,我尝试在该项目中使用 LocalBroadcastManager,因为广播都是本地的,但 eclipse 似乎无法导入兼容类。我已经使用 Android SDK 管理器安装了它。我在这里做错了什么吗?

最佳答案

this Activity passes the new variables to a IntentService using a BroadcastReceiver.

这毫无意义。使用 startService() 将命令发送到 IntentService。并且 IntentService 不应该有 BroadcastReceiver,因为 IntentService 将在 onHandleIntent() 完成后立即销毁因此永远不会收到广播。

I've tried using LocalBroadcastManager in this project since the broadcasts are all local but eclipse doesn't seem to be able to import the compatibility class.

::耸肩::

Here is a sample project与使用 LocalBroadcastManager 的 Eclipse 项目文件。我在创建项目时没有遇到特别的 Eclipse 问题。

关于android - 服务中的 BroadcastReceiver 不接收广播 Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9638142/

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