2012-03-23 99 views
2

我正在開發一款Android應用程序,可在應用程序運行時跟蹤背景中的一些內容。我是Android的初學者,所以我會盡力描述我想要做的事情。Android服務在10秒後關閉

的設置: MainActivity,TrackerActivity,TrackerService(該服務包含一個激活鎖定)和TrackerServiceWakeupReciever

這將運行時TrackerService是閉合。

public class TrackerServiceWakeupReciever extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 

     Intent serviceIntent = new Intent(); 
     serviceIntent.setAction("com.example.android.TrackerService"); 
     serviceIntent.putExtra("action", "checkSound"); 
     context.startService(serviceIntent); 
    } 
} 

從TrackerActivity啓動服務的代碼:

Intent serviceIntent = new Intent(); 
serviceIntent.setAction("com.example.android.TrackerService"); 
startService(serviceIntent); 

當進入應用程序在MainActivity開始,那麼當TrackerActivity會從在MainActivity開始TrackerService獲取TrackerActivity的OnCreate開始。該服務正好運行10秒並關閉。然後TrackerServiceWakeupReciever再次啓動該服務,並再次運行10秒a並循環。

它爲什麼只在10秒內運行?我注意到,如果我快速回到MainActivity並按下睡眠按鈕,服務將繼續運行。即使當設備退出睡眠狀態,服務仍在運行,正如我希望的那樣。

如何解決這個問題?已經用了一個星期的時間弄清楚了。我想這是simpel :)

在此先感謝。 Martin

+0

你是否想讓你的服務停留更長時間或說一段時間? – Rohit 2012-06-01 09:27:40

回答

0

難道是因爲GoAsync()的一個未處理的實現在您的(其他)BroadcastReceivers之一的某處嗎? 10秒鐘後,如果尚未從goAsync()中檢索到PendingResult,則調用finish()會關閉它們。見文檔瀏覽:

BroadcastReceiver

否則也許(一般來說)你擋住的東西太久。