如果在拍摄图像时方向发生变化,则RxImagePicker不会调用完成

时间:2016-06-23 19:31:48

标签: android rx-java android-4.0-ice-cream-sandwich rx-android

我使用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。重启不是我的活动或片段,因为我的应用程序中保留了所有状态。

我做错了什么?

2 个答案:

答案 0 :(得分:1)

根据消息来源,RxImagePicker使用PublishSubject将uri通知传达给客户。 Picker启动隐藏活动,该活动在其onCompleted()回调中发出onDestroy()。响应于方向改变,该活动重新调用该回调。由于SubjectObservable,因此它遵循Observable contract,其中指出onCompleted()后应该没有其他通知,因此onNext()通知如下onCompleted()被忽略。还有一个问题:成功选择图像时会调用onCompleted()两次。似乎没有解决方法,可能的解决方案:

  • 分叉库并自行解决上述问题

  • github上的文件问题,作者可以解决这些问题

  • 推出自己的解决方案(最好的IMO)

答案 1 :(得分:0)

事实证明这不是那么特别。

我只是忘了更新到最新版本,并使用了几个月前的版本库,它修复了我正面临的问题。

我已更新到最新版本,问题就消失了。