2014-09-25 20 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

相關問題