在活动之间保留/传递数据的更好方法

时间:2014-06-04 16:16:38

标签: android parse-platform

我正在使用Parse SDK制作Android应用。我正在努力的是创建帖子的流程。目前,在我的主要活动中,用户选择发布照片/视频的帖子类型(照片,视频等)并转到下一个名为NewActivity的活动。在此活动中,用户可以查看照片/视频并编辑帖子的隐私或位置。改变隐私或地方为每个人启动一项新活动。

我遇到的主要问题是在活动之间保留并传递此Post个对象。

我的第一个(坏)解决方案只是在Bundle中传递带有intent的数据,但是这很快就变得非常混乱,因为我真的需要在活动之间传递Post对象。我从该解决方案切换到使用名为DataHolder的单例类。

在每个活动中,我调用DataHolder.getInstance(),当点击创建帖子按钮时,我通过执行:Post创建一个新的DataHolder.getInstance().setPost(new Post())对象。在以下活动中,当用户输入有关帖子的更多信息时,我会设置帖子的属性。

在遇到这个问题之前,这一切都很顺利。当我回到我的应用程序(可能是它被杀死)时,我会得到NullPointerException,因为Post对象为null。我正在查看Android docs on passing data between activites/services并需要一些帮助。

我应该在这里使用Singleton类模式吗?在活动之间传递此Post对象的最有效和最简单的方法是什么?我应该使用应用程序单身人士吗?我会使用ParcelableSerializable,但Post对象是ParseObject,所以这不是一个选项。我是否应该通过使用Fragments来保护隐私和放置活动(尽管它们有不同的屏幕和不同的操作栏)来完全避免传递数据?我应该使用startActivityForResult进行隐私和举办活动吗?

1 个答案:

答案 0 :(得分:1)

您应该考虑应用程序可能因任何原因随时被杀死并为此做好准备。您可以使用类似会话对象的内容在活动之间进行通信。您可以根据需要经常保存/加载它,这样您就不会有丢失数据的风险。如果您无法序列化实际对象(例如ParseObject),您可以序列化所需的部件以重建它(即将图像保存在临时文件夹中并根据需要加载它)。