【问题标题】:BroadcastReceiver does not receive Broadcast from IntentServiceBroadcastReceiver 不接收来自 IntentService 的广播
【发布时间】:2013-08-22 14:10:41
【问题描述】:

我正在尝试从 IntentService 向启动它的活动发送广播,这就是我在活动中注册接收器的方式:

private BroadcastReceiver mInitializer;

@Override
protected void onCreate(Bundle savedInstanceState) {
    ....
    mInitializer = new InitializationReceiver();
    IntentFilter initializer = new IntentFilter();
    initializer.addAction(IntentConstants.Tasks.INITIALIZE);
    initializer.addAction(IntentConstants.Initialization.INITIALIZE_IS_FIRST_START);
    initializer.addAction("test");
    registerReceiver(mInitializer, initializer);
    ....
}

private class InitializationReceiver extends BroadcastReceiver {
    private InitializationReceiver() {
        if(D) Log.d(TAG, "Instantiated InitializationReceiver");
    }
    @Override
    public void onReceive(Context context, Intent intent) {
        if(D) Log.d(TAG, "Received broadcast, intentAction: "+intent.getAction());
        if(intent.getAction().equals(IntentConstants.Tasks.INITIALIZE)) {
            if(D) Log.d(TAG, "Received Initialize Intent");
        }
        if(intent.getAction().equals(IntentConstants.Initialization.INITIALIZE_IS_FIRST_START)) {
            if(D) Log.d(TAG, "Received First Start Intent");
        }
    }
}

这就是我从 IntentService 发送广播的方式:

if(D) Log.d(TAG, "Got here");
Intent testIntent = new Intent("test");
sendBroadcast(testIntent);
  • 创建服务的原因是“到达这里”被记录,
  • BroadcastReceiver 在创建服务之前初始化,并且
  • 发送广播时,活动可见。
  • 未收到广播,原因是“收到的广播...”从未被记录

什么可能导致这个问题?

【问题讨论】:

    标签: android broadcastreceiver intentservice


    【解决方案1】:

    您应该分别在onResume()onPause()registerunregister 接收您的接收器。因为如果你只在onCreate()注册它,在onPause()注销,那么下次把activity带到前台,onCreate()就不会再被调用,然后它就不会再注册receiver了。但onResume() 总是在显示的活动上被调用。

    public void onResume() {
        super.onResume();
        ....
        registerReceiver(myBroadcastReceiver, intentFilter);
    }
    
    public void onPause() {
        super.onPause();
        ...
        unregisterReceiver(myBroadcastReceiver);
    }
    

    【讨论】:

    • 你是对的,Facebook 登录导致活动停止,然后在 onStop 我取消注册接收器。之后就不再注册了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多