2010-09-03 60 views
0

有沒有一種方法可以讓活動繼續運行,即使它已被髮送到後臺,主頁按鈕被單擊,? 我的應用程序有一個倒計時器,我希望計時器保持運行,即使應用程序在後臺。在bkground中運行的android活動

有沒有辦法做到這一點,而不使用服務?因爲我一直在閱讀服務和即時通訊真的不知道如何使用它們...如果服務是唯一的方法可以有人給我一個簡單的教程或指導從哪裏我可以嘗試這... 我已經看到所有在developer.android.com網站上的文檔和例子...任何除了那些...

三江源

回答

0

有沒有辦法讓一個活動運行,即使它已經被送往背景?

不,沒有辦法。

如果你read about the Android Lifecycle你會發現很明顯,沒有辦法做到這一點。我認爲Android讓你在活動中分割你的應用程序的部分原因是,它可以很容易地爲不在當前使用的活動釋放資源。

我的應用程序有一個倒計時器,我希望計時器保持運行,即使應用程序在後臺。有沒有辦法做到這一點,而不使用服務?

如果你不想使用Service你可以嘗試使用the AlarmManager

1

我已經實現了小秒錶應用程序(用於拼圖解決時間測量),並且即使按下home按鈕,它也會繼續在後臺工作。

我用的處理程序()

mRepetitiveTimeoutHandler.postDelayed(processWatchTimer, DISPLAY_UPDATE_TIMEOUT); 

以定期調用

private Runnable processWatchTimer = new Runnable() 

...

時間測量是通過每一次比較當前時間System.currentTimeMillis()時運行的觸發器來完成。

+0

我可以看看你使用處理程序的代碼片段嗎? – user434885 2010-09-03 08:24:46

+0

注意到很多顯示。請參閱有關Handler()的Android文檔,一切都將清晰。 – Zelimir 2010-09-03 08:50:26

1

下面的處理程序使用示例。如果您按Home按鈕,它將繼續工作,但如果按下Back按鈕則不會繼續工作。爲了達到這個目標,你需要使用服務,正如第一個答案中已經提到的那樣。

import android.os.Bundle; 
import android.app.Activity; 
import android.os.Handler; 

public class HandlerExample extends Activity { 

    private final static int DELAYED_ACTION_TIMEOUT = 10000; 

    private Handler mRepetitiveTimeoutHandler; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     super.setContentView(R.layout.example); 

     mRepetitiveTimeoutHandler = new Handler(); 
     mRepetitiveTimeoutHandler.postDelayed(processWatchTimer, DELAYED_ACTION_TIMEOUT);      
    } 

    private Runnable processWatchTimer = new Runnable() 
    { 
     public void run() 
     { 
      mRepetitiveTimeoutHandler.removeCallbacks(processWatchTimer); 
      //Put your action here. 
     } 
    }; 
}