1

我在不同活动之间传递状态数据时遇到问题。现在我有四个:

  • 活动之间的坐标(一个大的 onActivityResult 方法)并且没有真正的 UI(只是一个空白布局)
  • B 添加一些数据(字符串)
  • C添加一些数据(拍照)
  • D 显示上传前对数据的审查,之后状态被删除

首先,我将此工作流的状态存储在活动 A 的实例变量中,但大多数情况下,Android 从 B 返回时都会对 A 进行垃圾收集(可能是因为方向更改),所以我得到了空指针异常。然后我尝试将状态存储在一个可打包对象中,该对象是在 B 返回到 A 并返回结果时创建的,然后将该对象传递给 C。它很好地到达 C,但是当我再次从 C 打包对象以返回时到 A 它由于某种原因没有到达。当试图将对象从 A 交给 D 时,这会导致另一个 NPE。

最后,数据需要删除:上传后由D删除,或者如果您中途关闭应用程序并且没有完成所有活动。您将在 A(或 B,这是一个实际可用的活动)重新开始。

到目前为止,我目前的结构感觉比它应该的要复杂得多。我认为应该取消活动 A。但我不确定在它的位置上实施什么。此外,我不确定如何使活动 C 可重复 2 或 3 次,每次都添加数据,然后再转到 D。我发现的可能解决方案:

我是 Android 开发的新手......我可能迟早会让它们全部工作,但我的情况的正确解决方案是什么?

4

2 回答 2

2

您应该更加关注Activity Lifecycle。在您的情况下,在您的intents 和 results中使用extras就足够了。服务和 SharedPreferences 绝对不是您想要的。如果数据非常复杂或庞大,扩展应用程序是一个不错的选择,但这看起来不像您的情况。

于 2013-03-06T09:29:12.910 回答
1

您可以使用

android.app.Application class

在您的应用程序中,它是应用程序级别的类,它是通过在 menifest.xml 文件中配置来自动创建的。您可以通过以下方式在活动中访问此类

getApplication();

您可以在此类中设置应用程序级别数据,并从一个活动中设置并在另一个活动中使用它

于 2013-03-06T11:44:39.860 回答