我有一個Android應用程序,它具有在後臺運行的服務,與遠程服務器通信,並在需要時向用戶顯示通知。該應用程序還有一個供用戶進行交互的活動。當應用程序被終止時取消Android鬧鐘
其中一個要求是應用程序需要在早上自動啓動。在一天結束時,用戶可以自由退出應用程序(退出功能會停止服務,釋放喚醒鎖,並讓Android終止進程)。爲了自動重新啓動應用程序,我使用的調度和AlarmManager一個的PendingIntent報警:
//create intent to alert OnStartReceiver when alarm goes off
Intent i = new Intent(context, OnStartReceiver.class);
i.setAction("com.pointtrace.intents.alarm");
i.addFlags(Intent.FLAG_DEBUG_LOG_RESOLUTION|Intent.FLAG_FROM_BACKGROUND);
//wrap inside PendingIntent so that it can be used from outside
//our application
PendingIntent pi = PendingIntent.getBroadcast(context, 1, i, PendingIntent.FLAG_ONE_SHOT);
AlarmManager alarms = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Log.d("GXT", "Scheduling alarm action(i)=" + i.getAction());
//set alarm to go off at wake time
alarms.set(AlarmManager.RTC_WAKEUP, getWakeTime(), pi);
OnStartReceiver類被註冊爲接收廣播和報警時將重新啓動應用程序。
一切工作正常,除非用戶從任務管理器中殺死應用程序。如果應用程序通過被Android OS或我的電話System.exit(0)殺死而正常退出;它重新啓動正常。但是,當它從任務管理器中被殺時,看起來幾乎像是警報正在取消。
我在Android文檔中找不到任何暗示警報將被任務管理器取消的任何內容。關於如何正確設置警報,我做錯了嗎?
我試過刪除標誌,只使用0,但它沒有任何區別。
謝謝。
我指的是Android中的「任務管理器」應用程序。在某些設備上,可以通過設置/正在運行的應用訪問相同的功能,這是正確的。 – 2012-07-26 17:46:38
「在設置中運行的應用程序列表,然後單擊強制停止,然後是,取消任何未完成的警報,並阻止您的應用程序再次運行,直到手動啓動您的某個組件爲止。」您是否可以發佈鏈接,以便記錄Google網站或某處?我想詳細瞭解它。 – 2012-07-26 17:47:55
@AlexGdalevich:「我指的是Android中的」任務管理器「應用程序 - 沒有」任務管理器「應用程序作爲Android操作系統的一部分。最近的是將項目從近期任務列表中移出,但不會執行強制停止,並且不應取消您的警報。 「你可以發佈一個鏈接,它可能記錄在Google網站或某個地方嗎?」 - http://permalink.gmane.org/gmane.comp.handhelds.android.devel/157312 – CommonsWare 2012-07-26 18:58:47