获取onStop()的原因

时间:2018-09-27 11:30:33

标签: android android-lifecycle

我有一个android应用程序,在将其移到前台时,我总是自动发送数据。从图库中选择的图像或用相机本身拍摄的图像都可以作为数据的一部分。当被画廊选择时,我的应用程序不会进入后台,并且一切正常。但是,当我用相机拍摄图像时,该应用会进入后台,并且在恢复时,它会立即发送不包含图像的数据,因为当时尚未处理。
因此,现在我想在每次启动相机并将应用程序发送到后台时都设置一个标志,因此,我可以像这样进行检查

@OnLifecycleEvent(Lifecycle.Event.ON_START)
public void onMoveToForeground() {
    if (SomeSingleton.getInstance().getFlag() != 1) {
        sendData()
    } else {
        SomeSingleton.getInstance().setFlag = -1;
    }
}

但是要设置该标志,我首先需要知道onStop()的原因,以确保应用不会因为其他原因而停止运行。然后我想做这样的事情:

@Override
public final void onStop() {
    if (cameraInUse()) {
        SomeSingleton.getInstance().setFlag(1);
    }
    super.onStop();
}

这有可能吗?如果是,怎么可能?

1 个答案:

答案 0 :(得分:0)

您正在使用的库可以选择添加您自己的相机和图库点击侦听器(使用IPickClick)。

根据https://github.com/jrvansuita/PickImage#additionals上的文档,您可以执行类似的操作

PickImageDialog.build(setup)
    .setOnClick(new IPickClick() {
        @Override
        public void onGalleryClick() {
            SomeSingleton.getInstance().setFlag(0); // use your code to set flag for gallery
        }

        @Override
        public void onCameraClick() {
            SomeSingleton.getInstance().setFlag(1); // use your code to set flag for camera
        }
     }).show(this);

现在,您可以使用此标志来检查您的应用是否在相机或图库点击的背景下运行。