我使用RxImagePicker在我的纵向强制应用中拍照:
RxImagePicker.with(getActivity()).requestImage(Sources.CAMERA).subscribe(new Action1<Uri>() {
@Override
public void call(Uri uri) {
RxImageConverters.uriToBitmap(getActivity(), uri).subscribe(new Action1<Bitmap>() {
@Override
public void call(final Bitmap bitmap) {
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
//i take over here if we ever get here...
}
});
}
});
}
});
如果我在不旋转设备的情况下拍照,它就能正常工作(尽管图像是旋转的,但这是另一个问题)。但是,如果我以横向拍摄照片,则永远不会调用uriToBitmap
。重启不是我的活动或片段,因为我的应用程序中保留了所有状态。
我做错了什么?
答案 0 :(得分:1)
根据消息来源,RxImagePicker
使用PublishSubject
将uri通知传达给客户。 Picker启动隐藏活动,该活动在其onCompleted()
回调中发出onDestroy()
。响应于方向改变,该活动重新调用该回调。由于Subject
为Observable
,因此它遵循Observable
contract,其中指出onCompleted()
后应该没有其他通知,因此onNext()
通知如下onCompleted()
被忽略。还有一个问题:成功选择图像时会调用onCompleted()
两次。似乎没有解决方法,可能的解决方案:
分叉库并自行解决上述问题
github上的文件问题,作者可以解决这些问题
推出自己的解决方案(最好的IMO)
答案 1 :(得分:0)
事实证明这不是那么特别。
我只是忘了更新到最新版本,并使用了几个月前的版本库,它修复了我正面临的问题。
我已更新到最新版本,问题就消失了。