优化Disposable生命周期

This commit is contained in:
2025-07-08 16:33:20 +08:00
parent 4ad7351a58
commit 679e42cbf6

View File

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