优化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.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