Android程序開發入門——組件生命週期之Broadcast receiver

 我們繼續來學習組件生命週期之Broadcast receiver.之前有天翼社區的朋友問到過這個問題。

broadcast receiver只有一個回調方法:

void onReceive(Context curContext, Intent broadcastMsg)

 當經過receiver 請求,broadcast message到達的時候, Android 調用持有message的intent的 onReceive() 方法,只有broadcast receivers執行此方法的時候纔是激活的,當 onReceive()返回的時候,它就是非激活狀態

一個含有激活的broadcast receiver的進程是不會被中止的。但是隻含有非激活組件的進程在它佔用的內存被其他程序請求的時候,任何時間都可以被中止。

當響應broadcast message的程序因爲消耗很多時間而在另外一個線程 而非UI所在的線程處理的時候會出現一個問題,,當 onReceive() 開啓一個線程並返回後,整個程序(包括新建的線程)狀態是非激活的(除非此進程中有其他激活的組件), 因此這個進程就有被中止的危險。解決這個問題的辦法是onReceive() 方法啓動一個service,讓sercie去做耗時的工作,這樣系統就知道此進程中還有活動的工作。

下面的章節有更多關於進程被中止的討論。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章