广播接收器在android中没有收到任何东西

时间:2014-07-25 03:21:13

标签: android android-fragments broadcastreceiver

我想做的是当用户onbackpress那个新活动时,我想更新那个片段中的报警列表。但在我尝试使用广播接收器时,它没有收到任何东西。如何解决?

报警活动中的

@Override
    public void onBackPressed() {
        Log.d("test1","test R1");
        Intent intent = new Intent("on_alarm_remove");
        LocalBroadcastManager.getInstance(ctx).sendBroadcast(intent);
        super.onBackPressed();
    }
警报选项卡中的

片段

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        ctx = getActivity();

        intentFilter = new IntentFilter("on_alarm_remove");
        LocalBroadcastManager.getInstance(ctx).registerReceiver(mMessageReceiver, intentFilter);
}

private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            Log.d("test1","test R");
            db.removeRecord(db.getFirstAlarm().alarm_id);
            reloadFragment();
        }
    };

    @Override
    public void onPause() {
        if (mMessageReceiver != null)
            LocalBroadcastManager.getInstance(ctx).unregisterReceiver(mMessageReceiver);
        super.onPause();
    }

在清单

<receiver android:name=".reminder.ReminderFrag$mMessageReceiver" />

它没有崩溃,但没有发生任何事情,在日志“测试R1”已经运行,但“测试R”没有。再次感谢您的帮助

更新

我找到问题的根本原因,因为我在片段顶部打开一个新活动,它会在触发警报时调用onPause并取消注册监听器。

我如何区分警报触发器何时以及用户何时更改为其他选项卡/离开应用程序?我应该使用ondetach吗?

UPDATE2:

另外,我尝试删除onPause中的取消注册 但它崩溃并显示

java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState

0 个答案:

没有答案