Jef*_*rey 4 service binding android accessibility
我创建了一个 android 服务,它是一个AccessibilityService. 从我的活动来看,我想绑定到该服务。没有进程间通信,所以我尝试创建一个Binder只返回服务的本地实现(如本例中http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis /app/LocalService.html)。
问题是onBindin AccessibilityServiceisfinal并且我无法覆盖它以返回我的本地活页夹。
这是否意味着如果我想绑定到服务,我需要使用 AIDL?
您不能绑定到 AccessibilityService,因为它是onBind()声明为 final的方法。但是,您可以通过将其存储在静态字段中来使用它的实例。
在您的MyAccessbilityService类中:
1.创建您的AccessibilityService类型的静态字段
private static MyAccessibilityService myAccessibilityServiceInstance;
Run Code Online (Sandbox Code Playgroud)
2.在方法onServiceConnected()中初始化
@Override
protected void onServiceConnected() {
super.onServiceConnected();
myAccessibilityServiceInstance = this;
}
Run Code Online (Sandbox Code Playgroud)
3.在 onUnbind() 方法中关闭 AccessibilityService 时清除它:
@Override
public boolean onUnbind(Intent intent) {
myAccessibilityServiceInstance = null;
return super.onUnbind(intent);
}
Run Code Online (Sandbox Code Playgroud)
4.为你的实例创建一个getter,让我们添加注解@Nullable,因为我们不知道它会在服务生命周期的哪个时期被调用
@Nullable
public static MyAccessibilityService getInstance(){
return myAccessibilityServiceInstance;
}
Run Code Online (Sandbox Code Playgroud)
最后在您的 Activity 或任何您需要的地方:
MyAccessibilityService accessibilityService = MyAccessibilityService .getInstance();
if(accessibilityService != null){
//do smth here:
}
Run Code Online (Sandbox Code Playgroud)
在我的应用程序中实现,到目前为止工作正常。感谢 alanv 在他的回复/sf/answers/879037141/
| 归档时间: |
|
| 查看次数: |
2737 次 |
| 最近记录: |