上下观古今,起伏千万途。这篇文章主要讲述泄露的意图接收器rxAndroidble UPDATED相关的知识,希望能为你提供帮助。
我注意到在compose方法中,这个observable可以被绑定到一个活动生命周期来做所需的取消订阅,问题是我在服务中这样做,所以我不能使用这个库,或者至少我不知道怎么弄此服务生命周期并将observable绑定到它:
return bleDevice
.establishConnection(false)
.takeUntil(disconnectTriggerSubject)
//.compose(RxLifecycle.bindUntilEvent(MISSINGACTIVITYLIFECYCLE, ActivityEvent.DESTROY))
.doOnUnsubscribe(this::onDestroy)
.compose(new ConnectionSharingAdapter());
我正在使用RxandroidBle扫描用作传感器系统接口的众多设备,一切顺利,我在后台服务中这样做,问题是当我停止服务时我不能不接受该广播,我使用了提供的示例回购。 (更新)
答案有几种可能性来解决这个问题:
- 取消订阅(我最喜欢的)
Subscription
产生的.subscribe()
分配给一个属性,然后在服务onStop()
中调用:public void onStop() {
if (subscription != null) {
subscription.unsubscribe();
subscription = null;
}
}
如果你有一个以上的
Subscription
取消订阅,你可以看看什么是SerialSubscription
或CompositeSubscription
可能有用。- 使用
disconnectTriggerSubject
disconnectTriggerSubject
接受任何值将使RxBleDevice.establishConnection()
取消订阅,因此连接将被关闭。下游可能不知道它也应该取消订阅。人们可以将特殊的Throwable
传递给主题,然后传递给所有订阅者。只要确保订阅者会认为
Throwable
的传递方式与其他传递方式不同- 为您的服务实施
RxLifecycle
callbacks
RxLifecycle
is not a perfect solution推荐阅读
- 使用intent和get方法时Android应用程序崩溃
- Whatsapp喜欢通过短信实现邀请,只是短信,而不是通过意图选择器
- java.lang.ClassCastException(在尝试通过Instagram共享打印屏幕时,无法将byte []强制转换为android.os.Parcelable错误)
- android.net.wifi.STATE_CHANGE意图处理(在Activity中)
- Android Photo Gallery不会从OnActivityResult中的数据返回正确的Uri
- Cookie不适用于Apple设备上的WebSocket
- Android - 欧盟Cookie法
- Android - 保持会话活动直到关闭(直到用户注销)
- 带有IFrames Chrome 63的Android Cordova应用程序无请求标题Cookie