2012-02-19 73 views
0

我正在挖這個論壇,但無法找到我的問題的答案....廣播接收者是否考慮過服務?

1,我開發的SMS應用程序通過擴展broadcastreceiver和一切工作很好,問題是,手機後睡覺一段時間 - 應用程序不再有效。那麼廣播接收機是否考慮過服務? (這會在Android被閒置了X分鐘之後被Android殺死),因爲我沒有像服務內部那樣的「START_REDELIVER_INTENT」....我讀了一些帖子,說使用AlarmManaget - 但我不明白爲什麼。 (該示例的帖子不是關於接收SMS,而是關於日曆等...)

底線 - 我該如何解決這個問題?如果我需要使用一個服務在android殺死它之後運行自己 - 我不明白如何將我的broadcastreceiver轉換爲服務...(因爲它是唯一需要運行的東西...其他所有東西都是隻是設置和偏好....)

2,當我安裝GOSMS例如,Android問我 - 從現在開始我想用哪個應用程序作爲我的默認SMS程序,我需要什麼代碼爲了實現這種通知最終用戶?現在我的應用程序只收到短信通知......不會發送任何東西......提前

感謝....

+0

要保持服務正常運行並防止手機在「做你的事情」時進入睡眠狀態,應該保留部分[WakeLock](http://developer.android.com/reference/android/os/PowerManager。 WakeLock.html),你完成之後*釋放*(除非你想讓用戶開始給你的應用程序1星評級)。 – Jens 2012-02-19 07:47:50

+0

嗯......那不是我的意思。當手機在睡夢中 - 當我收到短信通知時醒來,我的問題是Android在X時間後殺死了我的進程 – 2012-02-20 08:40:58

+0

啊,你試圖在接收機中做很多東西?這隻有在它正在運行的服務中實際註冊時纔有效 - 而不是在AndroidManifest.xml中作爲接收方聲明的 - 將Intent的內容傳遞給服務並在那裏執行該操作(並且保留喚醒鎖,因爲srsly,設備可能會在將Intent傳送到接收器後重新開始休眠)。 – Jens 2012-02-20 09:36:21

回答

2

所以廣播接收器被認爲是服務?

不,這就是爲什麼它被稱爲BroadcastReceiver而不是Service。請參閱Application Fundamentals以正確理解Android應用程序的各種關鍵組件。

另外,如果你有正確註冊您的BroadcastReceiver's<intent-filter>AndroidManifest.xml那麼它將被「喚醒」來處理Intents雖然作爲延提到,可能需要獲得某種形式的WakeLock(和正確地獲取/處理/釋放在完成任務期間/之後的各種資源)。