無論如何,當我設置計時器時,即使重新啓動手機,它仍會運行?像鬧鐘一樣,當我重新啓動手機時,它仍然在那裏。如果有可能我可以得到它的代碼?我真的需要它。Android定時器應用程序
回答
是的,你可以做到這一點,但目前我還沒有代碼。 我可以給你製作你自己的步驟。
步驟
1在您的活動創建CountDownTimer
// 10 minutes Timer And 1 Second Delay
new CountDownTimer(10*30*1000, 1000) {
public void onTick(long millisUntilFinished) {
// save `millisUntilFinished` to sharedpreferences
}
public void onFinish() {
// clear sharedPreferences when it finished
//and do whatever you want after finishing the timer here
}
}.start();
2 - 創建一個BroadCastReceiver
與BOOT_COMPLETED
行動與上次保存的值重新啓動定時器從Sharedpreferences
@Override
public void onReceive(Context context, Intent intent) {
//again Start your timer from here
// Get millisUntilFinished from SharedPreference
millisUntilFinished = Long.parseLong(getLastSavedValueFromSharedPreferences());
new CountDownTimer(millisUntilFinished, 1000) {
public void onTick(long millisUntilFinished) {
// save `millisUntilFinished` to sharedpreferences
}
public void onFinish() {
// clear sharedPreferences when it finished
// and do whatever you want after finishing the timer here
}
}.start();
}
就是這樣。
EDIT步驟1-創建TestActivity.java
類
public class TestActivity extends AppCompatActivity {
SharedPreferences sharedPreferences;
SharedPreferences.Editor editor;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.test_work);
sharedPreferences = getSharedPreferences("MySharedPref", MODE_PRIVATE);
editor = sharedPreferences.edit();
startTimer();
}
private void startTimer() {
// 10 min Timer
new CountDownTimer(10*60*1000, 1000)
{
@Override
public void onTick(long millisUntilFinished) {
editor.putLong("millisUntilFinished", millisUntilFinished);
editor.commit();
}
@Override
public void onFinish() {
editor.clear();
// Do your work Here
}
}.start();
}
}
步驟2-創建BootReceiver.java
類
public class BootReceiver extends BroadcastReceiver {
SharedPreferences sharedPreferences;
SharedPreferences.Editor editor;
@Override
public void onReceive(final Context context, final Intent intent) {
sharedPreferences = context.getSharedPreferences("MySharedPref", context.MODE_PRIVATE);
editor = sharedPreferences.edit();
startTimer();
}
private void startTimer() {
// get remaining time from sharedPreferences
long millisUntilFinished = sharedPreferences.getLong("millisUntilFinished", 0);
// 10 min Timer
new CountDownTimer(millisUntilFinished, 1000)
{
@Override
public void onTick(long millisUntilFinished) {
editor.putLong("millisUntilFinished", millisUntilFinished);
editor.commit();
}
@Override
public void onFinish() {
editor.clear();
// Do your work Here
}
}.start();
}
}
步驟3-在AndroidManifest.xml
文件註冊你的接收機
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<!--Register your BootReceiver here-->
<receiver android:name=".receiver.BootReceiver">
<intent-filter >
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
以下是完整的代碼。你只需要按照步驟。
即使我重新啓動手機,計時器仍會繼續運行嗎?例如,我有10分鐘的計時器,然後我只剩下5分鐘,然後重新啓動手機。計時器是否仍然在5分鐘? –
也可以詳細說明sharedPreferences部分嗎?這是我從代碼中不能理解的唯一的東西。 –
@GlennMichaelTorregosa是的,當您重新啓動手機時,您的廣播接收器將會被呼叫,您的計時器將重新開始。 而sharedPreferences是數據存儲系統。它允許您存儲和訪問您的數據。 –
- 1. Android應用程序和定時器
- 2. Android應用程序內部定時器
- 3. Android應用程序定期更換壁紙使用定時器
- 4. 如何用線程構建Android定時器應用程序?
- 5. 在android上的定時器應用程序,線程
- 6. Android:應用程序關閉時保持定時器運行
- 7. Android倒數計時器應用程序
- 8. WCF服務應用程序定時器
- 9. 定時器在web應用程序
- 10. Android鎖定應用程序
- 11. 簡單的定時器應用程序不工作在android
- 12. Android應用程序中的多個定時器
- 13. 關於定時器和動作...幫助!! ----(Android應用程序)
- 14. android開發人員 - 定時器應用程序
- 15. 定時器Android應用程序啓動活動上創建
- 16. Android應用程序:定時器在手指上
- 17. 基於定時器的Android相機應用程序
- 18. 定時React.js應用程序
- 19. Android:實時android應用程序設計
- 20. android定時器處理程序java
- 21. Android處理程序/定時器請求
- 22. 確定何時點擊應用程序圖標啓動應用程序android
- 23. 當應用程序調用SQLiteOpenHelper時,Android應用程序停止
- 24. 從Android瀏覽器/ Chrome啓動自定義Android應用程序
- 25. 爲Android應用程序實現容器應用程序?
- 26. Android應用程序服務器的Socket程序不從應用
- 27. Android應用程序和應用程序服務器
- 28. 從Android應用程序選擇器隱藏應用程序
- 29. 客戶端(Android應用程序) - 服務器(Java應用程序)
- 30. 應用程序管理器中的Android應用程序標題
報警工作原因把它添加一個CalendarEvent,你想實現什麼,你需要時,計時器需要計算到雲上取決於當它開始和添加事件,看看[這裏](HTTPS: //developer.android.com/training/scheduling/alarms.html) –