2013-04-28 95 views
0

我有一個服務應用程序,該服務使用AlarmManager以設定的時間間隔進行輪詢,並且主屏幕上的主應用程序活動處於活動狀態。我遇到的問題是,如果應用程序的進程位於後臺(尚未被殺死)並且服務開始進行輪詢,則會將主要應用程序活動置於前臺。停止例程服務開始將現有後臺進程帶到前臺

如何阻止這種情況發生?實質上,我希望應用程序的所有進程都保留在後臺,除非用戶另有選擇。

感謝

+0

你能告訴我們一些相關的代碼嗎? AlarmManager發送了什麼PendingIntent以及該意圖的目標是什麼? – 2013-04-28 15:56:22

+0

掛起的意圖使用getService,目標類是服務的類。如果我殺了應用程序任務,服務將按預期在後臺啓動並處理。如果應用程序任務是後臺任務,那麼它將被啓動服務的意圖帶到前臺。稍後當我在我的電腦上時,我可以發佈代碼。 – 2013-04-28 16:14:36

回答

1

我是,如果應用程序的過程是在後臺(沒有被殺死)發行及服務開始輪詢,它帶來的主要的應用程序活動的前景。

然後你在呼喚startActivity(),或可能startForeground()(我不知道startForeground()將推動現有任務的前景,但我還沒有嘗試過,並不能排除這種可能性)。

+0

良好的通話。我有時候會根據另一個隱藏在代碼中的變量調用startActivity,而這些代碼在一段時間內沒有看過。看到你的回答讓我記住了!有沒有辦法來防止這種情況發生? – 2013-04-28 17:14:58

+0

@confused_at_times:防止發生什麼?如果你不想調用'startActivity()',不要調用'startActivity()'。 – CommonsWare 2013-04-28 17:37:40

+0

我開始的活動本身並不是我在屏幕上看到的活動。我看到的是應用程序發送到後臺之前的最後一個活動窗口。我可以通過將被調用的活動更改爲服務來解決此問題,所以startActivity永遠不會被調用。 – 2013-04-28 18:13:53