0

我在未接收广播意图的单例类中有一个广播接收器。

单例使用上下文初始化(即 getInstance(context))。

我调用 getContext().sendBroadcast(intent); 但 BroadcastReceiver 什么也没得到。我已经确认意图过滤器匹配。

我注册接收器的方式是在我的单例构造函数中,就像这样

private class Singleton(Context context) {
    context.registerReceiver(mReceiver, INTENT_FILTER);
....

private onDestroy(Context context) {
    context.unregisterReceiver(mReceiver);
....

这是怎么回事!?

4

1 回答 1

3

好的,所以我知道我做错了什么。Singleton 是由活动创建的,因此传入的上下文是一个活动上下文。 因此我需要将我的构造函数更新为:

private class Singleton(Context context) {
    context.getApplicationContext().registerReceiver(mReceiver, INTENT_FILTER);

不知道为什么这会有所不同。我的猜测是活动上下文被破坏了,因此 BroadcastReceiver 被破坏了吗?欢迎补充见解!

于 2013-08-17T00:45:32.680 回答