我在不同活动之间传递状态数据时遇到问题。现在我有四个:
- 活动之间的坐标(一个大的 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。我发现的可能解决方案:
- 使用带有 FLAG_ACTIVITY_FORWARD_RESULT 的意图并将活动链接在一起,如如何通过多个活动返回结果中所述
- 使用服务管理状态
- 摘自我现在桌上的书:使用 Fragments 存储状态(使用 setRetainInstance 方法)
- 扩展 android.app.Application 来管理状态
- 在 SharedPreferences 中存储状态(但我会在哪里做家务?)
我是 Android 开发的新手......我可能迟早会让它们全部工作,但我的情况的正确解决方案是什么?