我有一個服務應用程序,該服務使用AlarmManager以設定的時間間隔進行輪詢,並且主屏幕上的主應用程序活動處於活動狀態。我遇到的問題是,如果應用程序的進程位於後臺(尚未被殺死)並且服務開始進行輪詢,則會將主要應用程序活動置於前臺。停止例程服務開始將現有後臺進程帶到前臺
如何阻止這種情況發生?實質上,我希望應用程序的所有進程都保留在後臺,除非用戶另有選擇。
感謝
我有一個服務應用程序,該服務使用AlarmManager以設定的時間間隔進行輪詢,並且主屏幕上的主應用程序活動處於活動狀態。我遇到的問題是,如果應用程序的進程位於後臺(尚未被殺死)並且服務開始進行輪詢,則會將主要應用程序活動置於前臺。停止例程服務開始將現有後臺進程帶到前臺
如何阻止這種情況發生?實質上,我希望應用程序的所有進程都保留在後臺,除非用戶另有選擇。
感謝
我是,如果應用程序的過程是在後臺(沒有被殺死)發行及服務開始輪詢,它帶來的主要的應用程序活動的前景。
然後你在呼喚startActivity()
,或可能startForeground()
(我不知道startForeground()
將推動現有任務的前景,但我還沒有嘗試過,並不能排除這種可能性)。
良好的通話。我有時候會根據另一個隱藏在代碼中的變量調用startActivity,而這些代碼在一段時間內沒有看過。看到你的回答讓我記住了!有沒有辦法來防止這種情況發生? – 2013-04-28 17:14:58
@confused_at_times:防止發生什麼?如果你不想調用'startActivity()',不要調用'startActivity()'。 – CommonsWare 2013-04-28 17:37:40
我開始的活動本身並不是我在屏幕上看到的活動。我看到的是應用程序發送到後臺之前的最後一個活動窗口。我可以通過將被調用的活動更改爲服務來解決此問題,所以startActivity永遠不會被調用。 – 2013-04-28 18:13:53
你能告訴我們一些相關的代碼嗎? AlarmManager發送了什麼PendingIntent以及該意圖的目標是什麼? – 2013-04-28 15:56:22
掛起的意圖使用getService,目標類是服務的類。如果我殺了應用程序任務,服務將按預期在後臺啓動並處理。如果應用程序任務是後臺任務,那麼它將被啓動服務的意圖帶到前臺。稍後當我在我的電腦上時,我可以發佈代碼。 – 2013-04-28 16:14:36