android - 获取 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);
现在您可以使用此标志来检查您的应用程序是否在相机或图库点击时进入后台。
推荐阅读
- android - 设置扩展文件是否需要发布签名密钥凭据?
- ms-word - Mac Word 上的 Office 加载项商店中突然缺少加载项
- python - 使用 FOR 循环将数字从“81,33”更改为“81.33”
- winforms - 如何通过 VBS 将变量从一个 PS 脚本传递到另一个?
- java - Spring @Autowire 许多豆子
- c# - 具有不同数量参数的代表
- java - Java 自动保存文本文件的有效方法
- angular - 不能将 href 与 routerLink 同时用作 Angular 中的条件属性
- intellij-idea - InteliJ,行号旁边的本地更改标记消失了
- android - openqa.selenium.NoSuchSessionException:会话已终止或未启动