2014-09-25 21 views
0

是否有可能在一个方法内管理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方法中使用此方法,但我在整个地方取消注册错误。

回答

0

它在生活过程中生活。为什么不只是做

return somethingReceiver; 

然后管理它在你想要的地方?我的应用程序在不同的课程中创建接收者。与你的代码相同,但用

return somethingReceiver; 

并带有参数中的上下文。

BroadcastReciever handleSomething(Context context) 
{ 
} 

然后别忘了叫

unregisterReciever(); 

,当它需要。


我尝试在IntentService的方法来使用这个,但我得到注销所有的地方 错误。

我以前看过同样的错误。当我运行unregisterReciever()创建的接收者错误消失了。 您的代码创建接收者,但没有办法注销创建的接收者。

+0

不太清楚你在说什么。 – 2014-09-25 16:10:25

+0

@JoshElias,也许我不清楚你真正想要什么。 – user3439968 2014-09-25 16:17:03

+0

我试图澄清。 – 2014-09-25 16:36:21

相关问题