2015-04-12 140 views
0

我在开发应用程序时遇到了一些问题。如何处理简历后丢失的数据

在我最小化应用程序或关闭屏幕后,打开很多其他应用程序或在很长时间后重新打开手机。 当我重新启动我的应用程序时,它会尝试恢复并继续显示相同的页面(带有片段)。 但我需要的数据已被销毁,因此它将为空。 数据是一个对象数组,我知道也许我可以将它们存储在数据库中。 但由于数据会在用户每次点击某物时更新。 所以我不想将它保存到数据库中,我想这意味着大量的存储I/O女巫是没有必要的。 我想知道是否有任何解决方案重新启动洞应用程序时,东西被摧毁? 或者让它发生的唯一方法是我处理空数组并重新加载自己? 我真的不想这样做,因为我猜这会给我带来许多意想不到的问题,导致数据与许多页面相关。 切换页面时,我必须考虑太多情况。

有什么建议吗?

+0

要么必须使用数据库或共享首选项,并且如果希望数据更新,则必须在简历上重新加载数据。另一种方法是你可以完全完成应用程序。 – Aakash

+0

原因有其他情况会去onResme,我不能做onResume时重新加载。 我不必将数据存储很长时间或永久存储,可能在5或10分钟后销毁数据。 是的,我试图完全完成应用程序,并从列表销毁时开始。 –

回答

1

但我需要的数据都已经被破坏,因此将是无效

那是因为your process was terminated而你没有save your state

但由于数据会更新每次用户点击的东西

或者,你可以fork一个线程将数据保存为您onPause()onStop()方法的一部分。 “永不保存”和“每次点击后节省”之间有很多可能性。

所以我不想把它保存到数据库中,我想这意味着大量的存储I/O女巫是没有必要的

,如果你希望数据是有30多分钟在用户离开应用程序后,您的选择是将数据保存在本地(文件,数据库,SharedPreferences)或将数据保存到Internet的某处。

对于少量的在较短时间段的数据,你可以把提供给onSaveInstanceState()Bundle的数据,然后拉出来的数据Bundle稍后的(例如,在您的活动onRestoreInstanceState())。您已经应该这样做来处理屏幕旋转和其他配置更改。

我想知道是否有任何解决方案重新启动洞应用程序时,东西被摧毁?

欢迎您add android:clearTaskOnLaunch="true"到你的发射活动,以表明你总是要从头开始,每当用户离开你的应用程序,并试图回来了。用户不会理解这一点,因为这意味着他们即使暂时不在应用程序中也会失去他们的状态(例如,快速回复短信)。此属性不会终止您的进程,但它会force the user back to the launcher activity,并且会消除以前在您的应用中的任何其他活动。

或者让它发生的唯一方法是我处理空数组并重新加载自己?

这就是开发人员通常做的,是的。

+0

嗨,非常感谢!我不试图保存数据,因为我不需要长时间保存数据,我只希望这些数据可以保存1到2分钟,对于我来说数据在很长一段时间后被破坏是完全正确的。因此,将它保存在数据库中将是我要尝试的最后一件事。但是我遇到了一些问题,即数据被破坏了,但活动和片段状态仍然存在,我希望应用程序在这些数据被销毁时从头开始。我在考虑是否有一些解决方案可以在数据被破坏时强制活动被销毁。 –

+0

我试图添加android:clearTaskOnLaunch =“true”,它似乎会清除所有状态,当我用退后键离开应用程序时,但仍然在同一页面上时,我通过使用Home按钮离开应用程序或切换到另一个应用程序。我试图通过使用主页按钮离开应用程序时重现该错误。查看错误是否会再次显示,或者是否会重新启动应用程序。我认为重新启动应用程序的唯一方法是检查数据,并在数据为空时清除所有堆栈。但我想这不是一种优雅的方式......所以我一直在寻找一些更好的方法来做到这一点。 –