首页 > 解决方案 > 获取 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();
}

这是否可能,如果可以,如何?

标签: androidandroid-lifecycle

解决方案


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

现在您可以使用此标志来检查您的应用程序是否在相机或图库点击时进入后台。


推荐阅读