gpt4 book ai didi

通过 Intent 从相机应用程序返回时,Android Activity 被破坏

转载 作者:太空狗 更新时间:2023-10-29 15:46:31 26 4
gpt4 key购买 nike

我的 Activity 使用用户定义的对象来跟踪进度。当用户按下按钮并将其存储在其中一个对象中时,我需要从相机获取图像。

问题是有时它工作正常,但很多时候它重新初始化我的 Activity ,因此所有对象和我的进度都丢失了。据我所知,这可能是因为相机是一个内存密集型应用程序,而在后台运行时,操作系统会破坏我的应用程序以释放内存。

我不想让我的对象 Parcable 然后将它们保存到 Bundle。

我修改了我的 android list ,以便包含 Activity 标签

android:configChanges="orientation|keyboardHidden"
android:screenOrientation="portrait"

这是我的相机 Intent

Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photoFile));
startActivityForResult(takePictureIntent,REQUEST_IMAGE_CAPTURE);

这里是onActivityResult方法

protected void onActivityResult(int requestCode, int resultCode, Intent data){
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == Activity.RESULT_OK )
modifyResponseView_image();
}

我尝试了更多建议,觉得将 Activity 保持在前台可能会有所帮助,但我不确定它是否有用,也不确定如何去做。

我们将不胜感激您能提供的任何帮助。应用此功能的替代方案也会有所帮助。

最佳答案

The problem is that sometimes it works fine but many times it re-initializes my activity and hence all the objects and my progress is lost.

您的 Activity 也会在其他情况下被销毁,例如如果用户旋转屏幕、更改区域设置、将他们的设备放入扩展坞、从扩展坞中移除他们的设备等。在任何这些情况下,您的 Activity 的数据将会丢失,除非您通过某种方式保留它(例如,savedInstanceState Bundle)。

As far as i understand it might be because camera is a memory intensive app and while in background, the OS destroys my app to free memory.

正确。在我的前一段中,我列出了配置更改的条件,在这种情况下,您的流程会保留下来,但您的 Activity 会被销毁并重新创建。如果操作系统终止了您的进程,那么您内存中的所有内容都将消失。不过,savedInstanceState Bundle 应该交还给您的 Activity ,因为它会跨进程边界传递并保留在操作系统中,直到控制权返回您的应用程序。

I would prefer not to make my objects Parcable and then save them to the Bundle.

然后将您的数据保存到文件中。

或者,将您的数据保存到数据库中。

或者,将您的数据保存到 SharedPreferences

或者,将您的数据保存到“云端”。

或者,不使用第三方相机应用,直接将相机集成到您的应用中。

I have modified my manifest for android so that activity tag include

近三年来,这并不是一个特别有用的属性组合:

  • 它忽略所有其他配置更改

  • 它不能正确处理方向变化

  • 一般是反模式

feel that keeping my activity in foreground might help but am not sure about if it will nor how to do it

如果您的 Activity 在前台,则用户无法使用相机应用,因为相机应用不会在前台。

关于通过 Intent 从相机应用程序返回时,Android Activity 被破坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20927452/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com