仅限一个屏幕的半持久数据

时间:2013-05-11 03:33:23

标签: android android-asynctask persistent onresume onpause

我正在做的是一个简单的游戏,当它被打败时,进入一个新的活动,在那里它启动一个AsyncTask并将用户得分提交给服务器,服务器响应一系列分数(几个比我好,我,几个更差)比我)。

我想要做的是坚持这个数组,但仅限于此屏幕,然后用户存在将忘记特定的屏幕数据。游戏总是风景,所以我不需要担心屏幕旋转,但是用户可以跳出应用程序,当他回来并且应用程序没有被杀死时,它应该恢复到该屏幕,就像它一样,但是数据消失了(和异步任务再次启动),所以我想我需要以某种方式持久保存这些数据,但是将它写入数据库似乎太多了,因为我需要担心首先删除它等等。

所以我想知道,在这种情况下你会使用什么样的技术来保存数据?作为Application对象中的成员变量?临时表?保存的实例(即使将arraylist放在savedInstanceState中也会很痛苦)

谢谢!

2 个答案:

答案 0 :(得分:1)

我建议使用onSaveInstanceState。这是为这种情况而设计的。

事实上,这不是一种痛苦。在onCreate中使用putParcelableArrayList及更高版本getParcelableArrayList

如果你的数据类就像保持String(名称)和int(得分)一样简单,如果你之前没有实现,那么Parcelable是一个很好的练习。< / p>

答案 1 :(得分:0)

在某些方面,你的问题不明确。

  

我想要做的是坚持这个数组,但仅限于此屏幕,   那么用户就会忘记特定的屏幕数据。

通过这一行,您似乎只在活动运行时(前景或后台)才持久保存数据。因此,在这种情况下,不需要将数据存储在别处而不是类变量中。因此,如果这是您想要的,那么您可能正在调用onResume中的asynctask。在这种情况下,请在onCreate中调用asynctask。

但是,如果您希望在应用程序关闭后仍然保留数据,那么您可以使用SharedPreferences来存储数组。

如果您可以发布代码,则更容易了解您的问题。