onBind()
メソッドがfinal宣言されているため、AccessibilityServiceにバインドすることはできません。 しかし、インスタンスを静的フィールドに格納することでインスタンスを使用できます。あなたのMyAccessbilityServiceで
クラス:onServiceConnected方法であなたのAccessibilityService
private static MyAccessibilityService myAccessibilityServiceInstance;
2.Initializeそれの種類()
@Override
protected void onServiceConnected() {
super.onServiceConnected();
myAccessibilityServiceInstance = this;
}
3の
1.Create静的フィールドonUnbind()メソッドでAccessibilityServiceがオフになっているときに消去します。
@Override
public boolean onUnbind(Intent intent) {
myAccessibilityServiceInstance = null;
return super.onUnbind(intent);
}
あなたのインスタンスの4.Createゲッターをし、我々はそれがあなたの活動に
@Nullable
public static MyAccessibilityService getInstance(){
return myAccessibilityServiceInstance;
}
、最終的に呼び出されますどのサービスのライフサイクルの期間中に知らないので、のは、注釈@Nullableを追加してみましょうかあなたがそれを必要とするところで:
MyAccessibilityService accessibilityService = MyAccessibilityService .getInstance();
if(accessibilityService != null){
//do smth here:
}
私のアプリに実装されて、これまでのところうまく動作します。 彼の返信でalanvに感謝https://stackoverflow.com/a/12557673/5502121
ああ、私は参照してください。 AccessibilityServiceにバインドすることはできませんか? –
@JeffStorey:いいえ、最終的に 'onBind()'とマークしています。あなたは 'AccessibilityService'ソースを覗いてみると、内部で自分自身を使用しています。 – CommonsWare
そうですね、私はそれを見て、彼らはその実装を返します。ありがとう。 –