我使用ActivityManager.killBackgroundProcesses()按程序包名稱殺死進程。在我殺死一個不使用服務的應用程序(例如Calculator)之前,我可以看到TaskKiller中列出的應用程序,並且在使用killBackgroundProcesses之後,我看不到該圖標。對於使用服務的應用程序,我遇到了麻煩。即使我殺了它,我仍然可以在TaskKiller中看到它。我假設這是因爲使用START_STICKY的服務,但我怎樣才能阻止它重新啓動?你可以使用TaskKiller來終止服務(它需要一個額外的步驟,但它可以工作,所以它是可能的!)。例如,如果我嘗試殺死Pandora,音樂將停止播放,但在打開TaskKiller時我仍然可以看到服務正在運行。殺應用程序vs殺服務
我使用遍歷所有正在運行的進程,像這樣來搜索:
爲(RunningAppProcessInfo信息:activityManager.getRunningAppProcesses()){
當我發現這個過程中我要尋找我用killBackgroundProcesses。 如果我殺了一個沒有服務的應用程序,我可以運行循環,看看它不再出現在循環中。當我用服務殺死一個應用程序時,我仍然可以在循環中看到相同的應用程序。
我需要使用什麼機制來阻止服務重新啓動,如同TaskKiller所做的那樣?
請不要用典型的「你不應該這樣做」或「Android不是爲了這樣做」而回答這個問題。我的用戶要求我自動殺掉(不關閉)其他應用程序。 TaskKiller這樣做的事實意味着這是可能的。
您正在攻擊的應用程序的開發人員不理解您正在嘗試執行的操作。 – CommonsWare
除了使用getRunningAppProcesses()之外,還可以嘗試使用ActivityManager.getRunningServices()來查找進程。 – ciscogambo