我是Android开发的新手,并且已经编写了一个小应用程序,它可以调用Web服务并为一个相对简单的对象提供保护(想想:拍卖列表或类似的东西)。现在,当手机旋转并重新加载视图时,将重新调用Web服务,对象将重新水合并重新显示列表。这看起来很浪费。通过onSaveInstanceState存储数据时的最佳做法是什么?是否可以存储对象本身,或者最佳做法是存储ID并完成每次加载它的整个过程。在这里是否还有其他经验法则或陷阱?
谢谢
JP
答案 0 :(得分:2)
即使从数据库重新创建信息,通常也会为Android配置更改方案付出太多努力。
您要使用的是创建一个类,该类包含您希望在配置更改后仍然存在的对象的引用,并让您的Activity引用它。此外,您将在onRetainNonConfigurationInstance()
回调中返回该内容。在onCreate()
中,您调用getLastNonConfigurationInstance()
以查看是否由于配置更改而重新创建。此调用将返回包含所需数据的对象。
答案 1 :(得分:1)
由于您正在调用Web服务来填充列表,我猜您应该存储列表的数据(调用Web服务会消耗时间,如果您的用户没有稳定的连接,则可能会失败)。你可以用不同的方式做什么(比如数据库)。如果用户重新启动您的应用程序,此方法也可以帮助您,因为他不必等到Web服务响应。
另外:当您提出问题时,请重新考虑您的术语。你通常不会看到有人说对象的“水化”;谈论人口等更常见。
答案 2 :(得分:0)
尽可能多地缓存数据,每个数据连接在时间,资源和最终电池寿命方面都有“标准”成本。
尝试对请求进行分组并将其全部打包并尽可能地缓存响应。
答案 3 :(得分:0)
如果您只想避免在方向更改时调用服务,那么您可以在您的Manifest in activity标记中添加以下内容。
android:configChanges =“navigation | orientation | keyboardHidden”
但正如@DigCamara所说,他的方法是最好的,甚至对重启等其他场景也很有用。