gpt4 book ai didi

android - 切换到 Camera Intent 时应用程序类数据被清零

转载 作者:行者123 更新时间:2023-11-30 04:22:16 25 4
gpt4 key购买 nike

我正在开发一个应用程序,该应用程序使用自定义类并将其他自定义类作为成员。即:

public class TopClass {
public OtherClass1 otherClass1;
public OtherClass2 otherClass2;
}

此数据需要提供给其他几个 Activity 。我一直将它存储在应用程序的主要 Activity 中,并且能够引用它。

除了在 Droid X2 上运行时,一切都运行良好。在该设备上它将运行良好 - 直到调用外部 Intent。切换到相机、 map 或日历 Intents 时会发生同样的事情:在使用后退按钮返回应用程序后,或者在使用相机的情况下,使用“确定”按钮,应用程序将使用引用“TopClass”的 NPE 进行 FC

这里有一个摄像头调用的例子供引用:

public void startCamera(int pos) {
Log.v(App.DEBUG_TAG, "startCamera(slot "+pos+")");

Intent i = new Intent("android.media.action.IMAGE_CAPTURE");
i.putExtra(MediaStore.EXTRA_OUTPUT, getFilesDir().getAbsolutePath());
i.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivityForResult(i, pos);
}

我改用应用程序类来存储“TopCLass”,但没有任何变化。

使用 ACRA 获取堆栈跟踪和 logcat,其中我开始记录 Activity 中的每个生命周期事件,我可以看到返回 Activity 时“TopClass”为空。最后一个 Activity 的所有局部变量仍然以未更改的状态存在,只是“全局”数据已被取消 - 我猜是 GC。

我无法在我的设备(运行 CM7 [2.3.7] 的 Droid Incredible)或任何模拟器上复制它 - 甚至不能在 X2 插件上复制,也不能在我妻子的 Droid X 上复制。

我正在尝试将“全局”“TopClass”复制到本地“TopClass”变量的实验,但尚未收到是否成功的回复。

我的问题是:

  1. 持久保存此数据的正确或推荐方法是什么?根据我的阅读,我了解到它是使用 Application 类实例,但这不起作用。

  2. 知道为什么 X2 在调用外部 Intent 时会取消应用程序拥有的类吗?

最佳答案

What would be the proper or recommended way of persisting this data?

您将数据保存在文件中。无论是数据库、SharedPreferences 还是您自己设计的文件,都由您决定。

Any ideas why the X2 is nulling out the Application-owned classes when calling an external Intent?

很可能,它不是“清空应用程序拥有的类”。相反,您的进程正在终止。任何时候你不在前台,你的进程都可能被终止以释放内存给其他进程,无论你不在前台是因为你启动了第三方 Activity ,或者用户按下了 HOME,或者用户调出了最近的任务列表并导航到另一个任务,或者用户接到电话,等等。 X2 可能比其他设备更积极地关闭后台进程,无论是专门设计的还是摩托罗拉做出的其他决定的副作用。

关于android - 切换到 Camera Intent 时应用程序类数据被清零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9088970/

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