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

时间:2015-12-29 16:48:36

标签: android debugging accessibilityservice

每次启动新的调试实例时,我的辅助功能服务都会重置为禁用状态。

是否有任何方法可以在连续的调试运行中保持启用(因为每次启用它以调试服务都非常漫长和无聊)?

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

我的日志中有可疑的行:

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}

因此服务被强制停止并且从未重新启动。

注意:

  • 如果我重新启动手机,则会启动该服务。
  • 我对ApiDemos sample和ClockBackService(QueryBackService)也有同样的行为:

    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
    

我试图通过覆盖onStartCommand而不做任何更改来返回START_STICKY。

这个旧的未回答的问题How to debug accessibility service?非常封闭,但就我而言,该服务似乎已停用,我无需停止并再次启动它。

我填写了this bug report on AOSP

1 个答案:

答案 0 :(得分:1)

这可能会在某种程度上解决解释缓解您的问题(但不会导致您Force stop的原因。)

Android 3.1之后,系统在所有广播意图上设置FLAG_EXCLUDE_STOPPED_PACKAGES。“所以在3.1之后,所有应用程序都会在启动时停止。为什么?出于安全考虑。

关闭旗帜的规则 FLAG_EXCLUDE_STOPPED_PACKAGES

(1)如果应用从设置或Force stop按钮获得unresponsive app,则会设置标记。

(2)您的应用需要位于Phone Storage NOT external storage(例如sdcard),否则会设置标记。在安装外部存储之前,BOOT_COMPLETE将被发送。因此,如果app安装到外部存储器,它将不会收到BOOT_COMPLETE广播消息。

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

Force stop假设BOOT_COMPLETED接收者之后,快速(自行编写脚本)重新启用您的服务(我猜你有这个,因为你的罚款重启后):

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"

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

请参阅launchcontrols