2014-10-10 75 views
1

我已經編寫了一個輔助功能服務,並且我希望一旦它接收到一個輔助功能事件(即在方法onAccessibilityEvent中),就會停止/終止該服務。這可以做到嗎?我試圖殺死使用殺死進程如下,但它不工作。無障礙服務可以停止還是被殺死?

unbindService(mSvcConn);
android.os.Process.killProcess(android.os.Process.myPid());

我已經給下面的權限在AndroidManifest.xml

我知道,無障礙服務不能以編程方式開始,但無法將其停止/被殺要麼?

+0

pradeep 2014-10-10 14:22:42

回答

4

無障礙服務無法從啓用的服務列表中刪除自己,或者在不自動重新啓動的情況下終止自己的進程,但是您可以調用AccessibilityService.setServiceInfo(new AccessibilityServiceInfo())以有效關閉服務。

調用AccessibilityManager.isEnabled()仍然會返回true,但您的服務不會收到事件。

+0

感謝Alanv的回覆。您的回覆似乎回答了我的問題,但我唯一擔心的是該服務在沒有執行任何任務時正在運行。此外,當手機重新啓動時,無障礙服務似乎又開始了。任何想法如何我們可以避免在手機重新啓動時重新啓動此服務? – pradeep 2014-10-14 07:32:37

+1

您可以提示用戶禁用該服務。實際上完全禁用服務(例如,禁用組件)有一些黑客方法,但它們會導致比他們的價值更大的麻煩。 – alanv 2014-10-14 20:49:09

0

在Android 7.0(API 24)中,您可以在AccessibilityService上調用disableSelf()來禁用服務,該服務也會停止服務。

相關問題