2012-11-05 51 views
0

我在我的android應用程序中有一個服務,我需要它永遠不會停止。 如何標記我的服務,以便用戶永遠不會停止它? 如果用戶轉到:「設置 - 應用程序 - 運行服務 - 我的服務」,然後單擊「停止」,我的服務不應停止。 我該怎麼做?如何標記我的Android服務不會被用戶阻止?

回答

2

您無法阻止停止服務。您也無法阻止某人強制關閉您的應用。即使可能,用戶仍然可以通過卸載您的應用程序來終止您的服務。爲什麼你想要服務不被阻止?

第二次以爲你可以有兩個服務,通過檢查ActivityManager.getRunningServices()定期監視對方。當一個服務被殺時另一個服務可能會重新啓動它。這可能會被視爲惡意活動,你可能會收到非常負面的評論。

+0

我的服務在給定的時間間隔內發送設備的地理位置(lat和long)。 –

+0

服務是要走的路,但沒有任何理由阻止用戶殺死它。 Android已經警告用戶,查殺服務可能會導致應用程序發生故障。 – Samuel

+0

好的,謝謝。我去用你的想法使用兩種服務。 非常,非常感謝! –

0

我要回避明顯的問題:

你爲什麼要這麼做?

並給你一個可行的答案。你需要兩項服務。每一個監視另一個。如果用戶殺死服務A,則服務B重新啓動它。如果用戶殺死服務B,則服務A重新啓動它。

服務將不得不非常迅速地作出響應並重新啓動服務。這將防止用戶立即殺死他們。所以你需要設計一個非常快速的心跳服務,但它應該是可能的。當然,這不會阻止用戶簡單地卸載您的應用程序。

+0

此應用程序不會因爲是企業應用程序而被卸載,並且僅用於企業設備(手機或平板電腦)。 我的應用程序發送此設備的位置。 –

+0

這不起作用,就好像用戶強制停止應用程序,兩項服務都不會再運行,所有帶有AlarmManager的預定警報都將被移除,等等。 – CommonsWare

+0

我同意 - 強制停止應用程序將停止所有服務。這種解決方案只有在用戶部隊停止服務時纔會起作用,而不是整個應用程序。要解決這個問題,那麼你必須有兩個應用程序,每個應用程序都有我描述的服務。由於這是針對企業設備的,因此要求不會出現問題。 –

0

「我爲用戶而戰」。

我會沮喪的應用程序,不讓我取消它正在運行的服務。

我不能想到一個用例,其中應用程序(不是在系統中的東西)應該防止用戶取消某些東西。當然,你應該通知用戶服務沒有運行,並提供一個簡單的方法來重啓它。