2011-08-23 71 views
1

在我的應用程序中,我使用廣播接收機來檢測之前記錄和註冊的接近警報更改。但是當廣播接收器接收到接近警報時,我需要做我的應用程序所做的事情。我正在創建服務,當應用程序第一次打開時,我正在考慮使用該服務來做廣播接收調用時的那個工作,因爲即使應用程序被操作系統殺死,我希望我的應用程序能夠正常工作。這種情況的最佳做法是什麼?我在正確的軌道上嗎?廣播接收機和服務組合的最佳做法

編輯:而且我也使用

<intent-filter> 
    <action android:name="android.intent.action.BOOT_COMPLETED" /> 
</intent-filter> 

BOOT_COMPLETED意圖過濾器來重新註冊我的廣播接收器,如果用戶在啓動設備。

+0

請把它標記爲答案是否能解決你的問題.. – 2012-12-10 04:40:22

回答

1

是的,你是在正確的軌道

在BootCompleted你就可以開始在廣播接收器class.As的的onReceive()方法 服務時 andoid手機將開始它會廣播意圖。 記住永遠不要在完整的應用程序註銷該廣播

+0

現在,broadcastreciever將在啓動時被註冊,但我所有的接近警報會因此很可能它不會收到任何東西,因爲我registerd提醒我的申請,但是,走了啓動應用程序不會出現(我在應用程序啓動時添加了所有我的接近警報),所以我的proximityAlerts。我的應用程序必須重新打開以重新註冊接近警報,否則我應該在另一個地方重新註冊它們? –

+0

onBootup你也可以啓動一個應用程序 – Sameer

+0

是比用戶將面對的應用程序的用戶界面我認爲那不是他們想要的東西。我想在後臺建立這個 –

0

我知道,線程是舊的,但:

  1. 如果使用BOOT_COMPLETED過濾意圖,不要忘記啓動完成android.permission.RECEIVE_BOOT_COMPLETED的權限。

  2. 這取決於你的應用程序的邏輯,但如果你的邏輯需要啓動一個永久後臺服務,在後臺執行一些邏輯(偵聽傳感器數據等),你可以啓動服務和其他需要的初始化你的應用程序類。這將向您保證,一旦您的BroadcastReceiver的onReceive被調用(即使在啓動完成後),您的Application onCreate已經被調用,您的所有初始化都將準備就緒。