优化Disposable生命周期
This commit is contained in:
@@ -35,6 +35,7 @@ import io.reactivex.rxjava3.annotations.NonNull;
|
|||||||
import io.reactivex.rxjava3.core.Observable;
|
import io.reactivex.rxjava3.core.Observable;
|
||||||
import io.reactivex.rxjava3.core.ObservableEmitter;
|
import io.reactivex.rxjava3.core.ObservableEmitter;
|
||||||
import io.reactivex.rxjava3.core.ObservableOnSubscribe;
|
import io.reactivex.rxjava3.core.ObservableOnSubscribe;
|
||||||
|
import io.reactivex.rxjava3.disposables.Disposable;
|
||||||
import io.reactivex.rxjava3.functions.Consumer;
|
import io.reactivex.rxjava3.functions.Consumer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -69,14 +70,16 @@ public class SelectToSpeakService extends AccessibilityService {
|
|||||||
|
|
||||||
private static final int WAIT_TIME = 1500;
|
private static final int WAIT_TIME = 1500;
|
||||||
|
|
||||||
|
|
||||||
private WechatContact mContact;
|
private WechatContact mContact;
|
||||||
|
private String mName = "";//微信昵称
|
||||||
|
|
||||||
private int mCallType = TYPE_VOICE;
|
private int mCallType = TYPE_VOICE;
|
||||||
|
|
||||||
private Step mCurrentStep = Step.WAITING;
|
private Step mCurrentStep = Step.WAITING;
|
||||||
private String mName = "";//微信昵称
|
|
||||||
private boolean mAutoAccept = false;
|
private boolean mAutoAccept = false;
|
||||||
|
|
||||||
|
private Disposable mDisposable;
|
||||||
|
|
||||||
public interface AccessibilityEventCallback {
|
public interface AccessibilityEventCallback {
|
||||||
void onAccessibilityEventCallback(AccessibilityEvent accessibilityEvent);
|
void onAccessibilityEventCallback(AccessibilityEvent accessibilityEvent);
|
||||||
}
|
}
|
||||||
@@ -94,7 +97,7 @@ public class SelectToSpeakService extends AccessibilityService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void dealingAccessibilityEvent() {
|
private void dealingAccessibilityEvent() {
|
||||||
Observable.create(new ObservableOnSubscribe<AccessibilityEvent>() {
|
mDisposable = Observable.create(new ObservableOnSubscribe<AccessibilityEvent>() {
|
||||||
@Override
|
@Override
|
||||||
public void subscribe(@NonNull ObservableEmitter<AccessibilityEvent> emitter) throws Throwable {
|
public void subscribe(@NonNull ObservableEmitter<AccessibilityEvent> emitter) throws Throwable {
|
||||||
mAccessibilityEventCallback = emitter::onNext;
|
mAccessibilityEventCallback = emitter::onNext;
|
||||||
@@ -107,6 +110,7 @@ public class SelectToSpeakService extends AccessibilityService {
|
|||||||
_onAccessibilityEvent(accessibilityEvent);
|
_onAccessibilityEvent(accessibilityEvent);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
Log.e(TAG, "dealingAccessibilityEvent: mDisposable hash = " + mDisposable.hashCode());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -135,6 +139,10 @@ public class SelectToSpeakService extends AccessibilityService {
|
|||||||
if (mSettingBroadcastReceiver != null) {
|
if (mSettingBroadcastReceiver != null) {
|
||||||
unregisterReceiver(mSettingBroadcastReceiver);
|
unregisterReceiver(mSettingBroadcastReceiver);
|
||||||
}
|
}
|
||||||
|
if (mDisposable != null && !mDisposable.isDisposed()) {
|
||||||
|
mDisposable.dispose();
|
||||||
|
mDisposable = null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
Reference in New Issue
Block a user