2012-08-29 15 views
3

如果我在我的應用程序清單中註冊BroadcastReceiver(例如通知網絡更改),它何時開始通知?在設備啓動?或者需要手動啓動應用程序?BroadcastReceiver何時啓用?

回答

4

當您的設備完全啓動時,它開始接收廣播。但是,從Honeycomb(API Level 12)開始,您至少需要啓動一次應用程序才能啓用監聽廣播。

在Honeycomb及其以上版本中,當您安裝應用程序時,框架將其標記爲STOPPED_PACKAGE並且不包括其廣播接收器以供收聽。但是,一旦你啓動你的應用程序一次,這樣的標誌被刪除,你很好去:)

作爲替代,嘗試設置標誌Intent.FLAG_INCLUDE_STOPPED_PACKAGES您的廣播意圖,以包括那些也被停止的包。

例如:

intent.setFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); 
+0

只是要清楚:如果我啓動應用程序一次,然後重新啓動設備,廣播接收器將在啓動時啓用,對不對? – fiddler

+3

是的,那麼它的罰款 – waqaslam

+1

你總是可以使用Intent.FLAG_INCLUDE_STOPPED_PACKAGES(不管min-sdk),因爲它是最終的靜態;它的值是內聯編譯時間。 –

相關問題