Android 每次调试运行时禁用辅助功能服务

Android 每次调试运行时禁用辅助功能服务,android,debugging,accessibilityservice,Android,Debugging,Accessibilityservice,每次启动新的调试实例时,可访问性服务都会重置为禁用状态 有没有办法在连续的调试运行中保持它的启用状态(因为每次为了调试服务而启用它都很长很无聊) 我在真实设备和模拟器上有相同的行为。 服务中没有异常,我尝试了事件处理程序中没有代码的事件 我的日志中有可疑的行: 10:47:32.801 31669-31669/? E/AffinityControl: AffinityControl: registerfunction enter 10:47:32.821 3650-3690/? I/Activi

每次启动新的调试实例时,可访问性服务都会重置为禁用状态

有没有办法在连续的调试运行中保持它的启用状态(因为每次为了调试服务而启用它都很长很无聊)

我在真实设备和模拟器上有相同的行为。
服务中没有异常,我尝试了事件处理程序中没有代码的事件

我的日志中有可疑的行:

10:47:32.801 31669-31669/? E/AffinityControl: AffinityControl: registerfunction enter
10:47:32.821 3650-3690/? I/ActivityManager: Force stopping com.test.testaccessibilityservice appid=10241 user=0: from pid 31669
10:47:32.821 3650-3690/? I/ActivityManager: Killing 31271:com.test.testaccessibilityservice/u0a241 (adj 1): stop com.test.testaccessibilityservice cause from pid     
10:47:32.821 3650-3690/? W/ActivityManager: Scheduling restart of crashed service com.test.testaccessibilityservice/.MyAccessibilityService in 1000ms
10:47:32.821 3650-3690/? I/ActivityManager:   Force stopping service ServiceRecord{3f5e1fc4 u0 com.test.testaccessibilityservice/.MyAccessibilityService}
因此,服务被强制停止,并且从未重新启动

注意事项:

  • 如果我重新启动手机,服务就会启动
  • 我对和ClockBackService(QueryBackService)有相同的行为:

我试图通过重写onStartCommand而不做任何更改来返回START\u STICKY

这是一个非常接近这个老的未回答的问题,但在我的情况下,服务似乎被禁用,我不需要停止它,并再次启动它


我填写了。

这可能有助于解释缓解您的问题(但不是导致
强制停止的原因)

在安卓3.1之后
“系统在所有广播意图上设置
标志(排除)(停止)(包)
)。”因此在3.1之后,所有应用程序在启动时都会停止。为什么?出于安全原因

有一些规则可以关闭标志
标志\u排除\u停止\u包

(1)如果应用程序通过设置或
无响应应用程序
按钮获取
强制停止
,则设置标志

(2) 您的应用程序需要位于
手机存储
,而不是
外部存储
(例如
SD卡
),否则会设置标志。在安装外部存储器之前,发送启动完成。所以,若将应用程序安装到外部存储器,它将不会收到BOOT_COMPLETE广播消息

(3) 如果应用程序从未运行过,则会设置该标志(从不相对于当前引导状态;O)从不表示在该引导中,或者在上次引导状态中使该标志无效)

强制停止
重新启用服务的快速方法(如果您愿意,可以编写脚本)假设
启动完成
接收器(我猜您有这个,因为重新启动后您的罚款):


我一直在做易访问性服务开发,从未见过这种行为。测试了Droid Ultra、Nexus 5、7、9、Droid Turbo和所有三星Galaxy tab变体。您的服务可能无法正常退出。您是否尝试过查看完全未经验证的LogCat日志并查找崩溃报告/异常?服务错误处理和退出不如一般应用程序开发那么干净。我添加了一些日志,并用一些细节更新了我的问题。您是否有相同的日志(终止和安排重新启动)?“强制停止”(日志中的最后一行)的第二次出现对我来说似乎很可疑。我与ApiDemos&ClockBackService有相同的行(和相同的问题)(我添加了日志)。请确定,您的调试控制台中是否有相同的行:
Force stopping package:com.example.android.api设备SHELL命令:am Force stop com.example.android.api启动应用程序:com.example.android.api/com.example.android.api.ApiDemos。设备SHELL命令:am start-D-n“com.example.android.api/com.example.android.api.ApiDemos”-a android.intent.action.MAIN-c android.intent.category.LAUNCHER
?如果进入
设置->可访问性
,会发生什么?您是否看到已启用的服务?如果你手动启用它们,你能在事后调试吗?我认为你误解了这个问题。问题不是在重新启动时出现的,而是在每次调试运行时出现的。不,为了完整性,我补充说,问题编号(1)是关于强制关闭和标志\u EXCLUDE\u STOPPED\u packages抱歉,但我仍然认为这与此无关,问题涉及可访问性服务。答案将提供一种解决这种特殊问题的方法。@JérémyReynaud你找到答案了吗?@hellowill89不幸的是,没有。
18:07:15.871 3523-4251/? I/ActivityManager: Force stopping com.example.android.apis appid=10242 user=0: from pid 19382
18:07:15.871 3523-4251/? I/ActivityManager: Killing 16542:com.example.android.apis/u0a242 (adj 1): stop com.example.android.apis cause from pid 19382
18:07:15.871 3523-4251/? W/ActivityManager: Scheduling restart of crashed service com.example.android.apis/.accessibility.ClockBackService in 1000ms
18:07:15.871 3523-4251/? I/ActivityManager:   Force finishing activity 3 ActivityRecord{2f907c7b u0 com.example.android.apis/.ApiDemos t8248}
18:07:15.881 3523-4251/? I/ActivityManager:   Force finishing activity 3 ActivityRecord{190ca05c u0 com.example.android.apis/.ApiDemos t8248}
18:07:15.881 3523-4251/? I/ActivityManager:   Force finishing activity 3 ActivityRecord{27ada6e8 u0 com.example.android.apis/.accessibility.ClockBackActivity t8248}
18:07:15.881 3523-4251/? I/ActivityManager:   Force finishing activity 3 ActivityRecord{51f4c32 u0 com.android.settings/.Settings$AccessibilitySettingsActivity t8248}
18:07:15.881 3523-4251/? I/ActivityManager:   Force stopping service ServiceRecord{113bf024 u0 com.example.android.apis/.accessibility.ClockBackService}
18:07:15.891 19382-19382/? D/AndroidRuntime: Shutting down VM
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"

adb shell am broadcast -a android.intent.action.BOOT_COMPLETED