2011-10-06 71 views
1

我的活動已使用registerReceiver()註冊了BroadcastReceiver。我想在收到廣播時更新一些用戶界面。 在我的實驗,我發現上下文碰巧是我的活動(singleinstance),是BroadcastReceiver中的上下文.onReceive總是調用registerReceiver的活動?

public void onReceive(Context context, Intent intent) { 
     Log.d(tag, context.getClass().getName()); 
} 

,但我不知道,如果它總是如此,因爲文檔都不清楚了。
我可以只將上下文參數投射到我的活動中嗎?

如何更改BroadcastReceiver.onReceive中的活動?

回答

2

如果您想要更新UI,請將一個Receiver作爲活動的內部類和廣播操作。現在抓住onReceive()並更新活動。 使用結束後,您應該註銷它 並且上下文始終是註冊爲onReceive()的廣播活動。如果您正在進行服務計算,則可以從服務中發送廣播以啓動更新。

+0

On receive isonon_ called in the receiver - 你的意思是「onReceive()甚至可以從服務中調用」?? –

+0

@Mr_and_Mrs_D最後一行很糟糕。感謝您解決這個問題。我編輯我的回答 – Sameer

+0

「註冊廣播作爲onReceive()」? :D我想要答案 - 一旦有意義,我會很高興投票。你的意思是,當廣播來自service_時,上下文始終是註冊接收者的活動_even?關於在清單中登記的接收人(不通過登記接收人)怎麼辦?請嘗試用英語清楚地表達自己的意思(我不是英語 - 介意!) –

相關問題