2012-09-07 54 views
0

我在應用程序中擴展了應用程序類。在那個類中,我有一個等待連接更改的BroadcastReceiver。如果完整連接丟失,則顯示特定的活動。但是,如果應用程序不是「焦點」(不在前臺),我不想顯示該活動。Android - 在未運行時處理應用程序連接更改

但是,Application類沒有onPause或onResume方法。如果應用程序正在運行,我如何才能顯示此活動?我是否必須在所有Acitivities中都有一個BroadcastReceiver(其中有很多,我不能爲它們創建擴展的Activity,因爲它們擴展了不同的Activity類(Activity,ListActivity,FragmentActivity等)。有可能只有一個BroadcastReceiver採取行動,當且僅當其中一個應用程序的活動在前臺?

回答

1

我想說在您的自定義Application類中註冊BroadcastReceivers是一種反模式,例如,你什麼時候註銷這個接收器?正如你所提到的那樣,Application類缺少一個Activity的生命週期回調(至少其中大部分是)

在你的情況中,我會註冊Receiver來處理連接chan在onResume()回調中的所有活動中動態創建,並在onPause()回調中註銷它們。很可能,所有活動都可以擴展FragmentActivity:ListAcitivity只是一個輔助類,你可以輕鬆地處理所有與列表相關的東西,而FragmentActivity只是擴展了基本的Activity類。

因此,我建議爲處理Receiver註冊的活動創建一個自定義基類,該註冊擴展了FragmentActivity。你所有的conrete Activity類都應該擴展這個基類。

相關問題