android 绑定(bind)到 AccessibilityService

标签 android binding service accessibility

我已经创建了一个 android 服务,它是一个 AccessibilityService。从我的 Activity 中,我想绑定(bind)到该服务。没有进程间通信,所以我尝试创建一个只返回服务的本地 Binder 实现(如本例中的 http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/LocalService.html )。

问题是 AccessibilityService 中的 onBindfinal 并且我无法覆盖它以返回我的本地 Binder 。

这是否意味着我需要使用 AIDL 才能绑定(bind)到服务?

最佳答案

您不能绑定(bind)到 AccessibilityService,因为它是声明为 final 的 onBind() 方法。 但是,您可以通过将其存储在静态字段中来使用它的实例。

在您的 MyAccessbilityService 类中:

1.创建您的 AccessibilityService 类型的静态字段

private static MyAccessibilityService myAccessibilityServiceInstance;

2.在onServiceConnected()方法中初始化

@Override
protected void onServiceConnected() {
    super.onServiceConnected();
    myAccessibilityServiceInstance = this;
}

3.在onUnbind()方法中关闭AccessibilityService时清除:

@Override
public boolean onUnbind(Intent intent) {
    myAccessibilityServiceInstance = null;
    return super.onUnbind(intent);
}

4.为您的实例创建一个 getter 并让我们添加注解 @Nullable 因为我们不知道它将在服务生命周期的哪个阶段被调用

@Nullable
public static MyAccessibilityService getInstance(){
    return myAccessibilityServiceInstance;
}

最后在您的 Activity 中或您需要的任何地方:

    MyAccessibilityService accessibilityService = MyAccessibilityService .getInstance();
    if(accessibilityService != null){
        //do smth here:
    }

在我的应用程序中实现,目前运行良好。 感谢alanv 的回复https://stackoverflow.com/a/12557673/5502121

关于android 绑定(bind)到 AccessibilityService,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9683927/

相关文章:

arrays - 通过绑定(bind)使用 NSPredicate 过滤自定义对象数组

c# - UpdateSourceTrigger 未应用于样式化控件

android - 使用 ffmpeg 时减小 apk 大小

language-agnostic - 动态作用域 - 深层绑定(bind)与浅层绑定(bind)

Android LocationListener 没有命中 onLocationChanged

android - Android 的 ServiceTestCase<MyService> 可以向我的服务发送消息吗?

android - 更新 Widget 中的 Android ListView

azure - 使用 TFS 自动化构建自动加密服务结构中的 settings.xml 文件

Android:无法将背景可绘制颜色设置为 percentRelativeLayout

Android 翻转动画 - 找不到与给定名称匹配的资源