【问题标题】:Static BroadcastReceiver not receiving custom intent静态广播接收器未接收自定义意图
【发布时间】:2018-10-26 20:33:29
【问题描述】:

我的 BroadcastReceiver 似乎没有收到它正在侦听的意图。

我正在启动一个必须一直运行的后台服务。每当服务被终止时,它都会向我的 BroadcastReceiver 发送一个意图,然后它会重新启动服务。

这是我服务的onDestroy

@Override
public void onDestroy() {
    Log.i(TAG, "onDestroy");
    sendBroadcast(new Intent("com.myapp.app.RESTART_SERVICE"));
    stoptimertask();
    super.onDestroy();
}

这是我的广播接收器:

public class RestarterBroadcastReceiver extends BroadcastReceiver {

    public RestarterBroadcastReceiver() {
    }

    @Override
    public void onReceive(Context context, Intent intent) {
        Log.i(TAG, "Service stopped, restarting...");

        context.startService(new Intent(context, ActivityRecognitionService.class));
    }
}

还有 Android Manifest 的重要部分:

<receiver
    android:name=".RestarterBroadcastReceiver"
    android:enabled="true"
    android:exported="true">
    <intent-filter>
        <action android:name="com.myapp.app.RESTART_SERVICE"/>
    </intent-filter>
</receiver>

为什么我的 BroadcastReceiver 没有收到意图?

【问题讨论】:

  • @kelalaka 在哪​​里,在广播课上?内容应该是什么?
  • 关于活动。 onDestroy 可能永远不会被调用。 OnDestroy
  • 但是正如你所看到的,我正在记录“Service onDestroy”并且我看到了这个。但我没有进入“服务停止,重新启动服务......”
  • 在启动服务时使用 START_STICKY 标志,以使其在停止时自行重启。
  • @daka 已经这样做了,服务仍然被杀死。

标签: android android-intent service broadcastreceiver android-manifest


【解决方案1】:

您的问题可能是 Android Oreo 有效地禁止了隐式广播。解决此问题的最简单方法是使用显式广播而不是隐式广播。

尝试将您的服务的onDestroy 代码更改为以下内容:

@Override
public void onDestroy() {
    Log.i(TAG, "onDestroy");
    // Here you're using an explicit intent instead of an implicit one
    sendBroadcast(new Intent(getApplicationContext(), RestarterBroadcastReceiver.class));
    stoptimertask();
    super.onDestroy();
}

由于您不再使用 Intent 操作,您还可以将 Android Manifest 更改为以下内容:

<receiver
    android:name=".RestarterBroadcastReceiver"
    android:enabled="true"
    android:exported="true">
</receiver>

希望这会有所帮助!

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-10
  • 1970-01-01
  • 2020-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多