2011-10-06 106 views
0

我有一個重大問題,保持服務活着從廣播開始接收

我做這適用於設備啓動了廣播接收器,所以我需要開始執行一項新的服務長時間運行的操作,

所以在廣播接收機的的onReceive()方法,我提出一個新的意圖,並通過該啓動一個新的服務,

現在我的問題是,這種服務儘快只執行很短的時間,作爲onRecieve()方法完成它的過程也完成了,並且我的服務也隨着Receiver進程的結束而停止。

因此,我該如何做到這一點,以保持從BroadcastReceiver開始的服務過程。

+0

我不確定這是否重要,但是您是否正在爲您的服務使用單獨的線程? – Noel

+0

http://stackoverflow.com/questions/3696082/how-to-schedule-my-android-app-to-do-something-every-hour 請按照這兩個鏈接,並嘗試這個例子。 – Spencer

+0

沒有不使用單獨的線程,但在服務中我使用單獨的線程,但此線程也停止。 –

回答

3

現在我的問題是,只要onRecieve()方法完成它的過程也完成了,並且我的服務也隨着Receiver進程的結束而停止,此服務只執行很短的時間。

只有當您撥打stopService()或服務呼叫stopSelf()時纔會發生這種情況。該服務具有BroadcastReceiver的獨立生命週期。它不會是開始之前onReceive()結束。

但在服務中,我使用單獨的線程,但此線程也停止。

這隻會在您自己停止線程時纔會發生。 Android不知道你創建的線程。

現在,最終,您的應用程序的進程將被終止。使用正在運行的服務時,這可能需要30分鐘到幾天的時間,具體取決於設備上是否還有其他功能,無論您是使用startForeground()等。一旦進程終止,一切都會消失,後臺線程和所有。

+0

是的,我的過程未在管理應用程序中列出。 –

+0

但是那麼爲什麼這個服務終止,如果我在活動內部調用startService(),那麼它不會終止 –

+0

可以請給我一個來自BroadcastReceiver或Service類的啓動活動的代碼,我使用下面的代碼,但是出現錯誤。 Intent i = new Intent(this,MyActivity.class); \t \t i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); \t \t startActivity(i);錯誤是標誌錯誤,它說無法開始活動沒有活動上下文 –