How Can I Programmatically Start And Stop An Accessibilityservice?
Solution 1:
Taken from the Lifecycle section of the AccessibilityService
documentation:
The lifecycle of an accessibility service is managed exclusively by the system and follows the established service life cycle. Starting an accessibility service is triggered exclusively by the user explicitly turning the service on in device settings. After the system binds to a service, it calls
onServiceConnected()
. This method can be overriden by clients that want to perform post binding setup.An accessibility service stops either when the user turns it off in device settings or when it calls
disableSelf()
(In Android 7.0 (API 24) and later).
Solution 2:
As stated in Sam's answer, the lifecycle of an AccessibilityService is managed exclusively by the system, so you can't kill it.
But apart resource optimization aims, if you still need to start/stop the AccessibilityService from operating in some circumstances, you can simply use the good old SharedPreferences
.
Your Service's onAccessibilityEvent should be:
@OverridepublicvoidonAccessibilityEvent(AccessibilityEvent event) {
SharedPreferencesprefs= PreferenceManager.getDefaultSharedPreferences(getBaseContext());
if (prefs.getBoolean("isServiceEnabled", true)){
/*
* Your code goes here
*/
}
}
When you want to "switch off/on" the service you can do it by simply writing this in some button's onClickListener or somewhere else according to your needs:
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
prefs.edit().putBoolean("isServiceEnabled", false).apply(); // disable
prefs.edit().putBoolean("isServiceEnabled", true).apply(); // enable
Post a Comment for "How Can I Programmatically Start And Stop An Accessibilityservice?"