获取 onStop() 的原因

Get reason for onStop()

我有一个 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();
}

这在某种程度上可能吗?如果是的话如何?

您正在使用的库可以选择为相机和画廊添加您自己的点击监听器(使用 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);

现在您可以使用此标记来检查您的应用是否在点击相机或画廊时进入后台。