你可以在方法中使用BroadcastReceiver吗?

时间:2014-09-25 15:41:14

标签: android broadcastreceiver

是否可以在方法中管理BroadcastReceiver的生命周期。

void handleSomething() {
    doSomethingThatWillBroadcast();
    BroadcastReceiver somethingReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            if (!intent.getBooleanExtra(SOMETHING_RESULT, false)) {
                finishSomething(false);
            } else {
                doAnotherSomethingThatWillBroadcast();
                BroadcastReceiver anotherSomethingReceiver = new BroadcastReceiver() {
                    @Override
                    public void onReceive(Context context, Intent intent) {
                        finishAnotherSomething();
                    }
                };
                IntentFilter anotherSomethingFilter = new IntentFilter(ACTION_SOMETHING);
                anotherSomethingFilter.addCategory(Intent.CATEGORY_DEFAULT);
                registerReceiver(anotherSomethingReceiver, anotherSomethingFilter);
            }
        }
    };

    IntentFilter somethingFilter = new IntentFilter(ACTION_DOWNLOAD_APK);
    somethingFilter.addCategory(Intent.CATEGORY_DEFAULT);
    registerReceiver(somethingReceiver, somethingFilter);
}

我尝试在IntentService方法中使用它,但是我在整个地方都会出现注销错误。

1 个答案:

答案 0 :(得分:0)

过程直播过程中的现场直播。为什么不做?

return somethingReceiver;

然后根据需要管理它?我的应用程序会在不同的类中创建接收者。代码与您的代码相同,但

return somethingReceiver;

并使用Context in params。

BroadcastReciever handleSomething(Context context)
{
}

然后别忘了打电话

unregisterReciever();

何时需要。


  

我尝试在IntentService方法中使用它,但是我取消注册   错误到处都是。

我之前看到过相同的错误。当我在创建的接收器上运行unregisterReciever()时,错误消失了。 您的代码创建了接收者,但是没有办法取消注册创建的接收者。