我有一个Android应用程序,在我的一个活动中,我打电话来说“客户”,这个调用是针对外部API,当我得到响应时,我把它作为JSON对象。我遇到的问题是我在活动中有一个ListView,当你点击它的项目时它会显示你的详细信息但是当你点击后退按钮时我必须再次拨打电话来填充它。在三星Galaxy 4S中它似乎保留了列表视图的数据,但在HTC android中令人难以置信它是空白的。所以我做的是,让它重新绑定OnResume(),这解决了两个问题,但后果是再次调用该服务器。当它的10或100个客户无关紧要,但我知道有些帐户有5000个,我相信它会崩溃。
我有什么方法可以提高Android在这个问题上的性能?我尝试了一个静态变量,但在某些时候该对象也被清除了。
Android应用程序通常如何处理从API检索数据并且需要在整个应用程序中存储它们并且不需要再次调用相同信息的情况?我正在考虑静态对象但是我想确保以正确的方式做到这一点。
答案 0 :(得分:1)
你有几个选择。
1)您可以将数据缓存在内存中。例如,您可以在Activity或App对象中创建静态缓存或缓存数据。如果您只在一个视图中执行此操作,并且它不是很多数据,那么这可能是一个不错的解决方案。但是,如果你必须为许多活动做这个并且有很多数据必须被缓存,你可能想要选择2.同时在android中的内存中存储数据并不意味着它不会是垃圾收集(在某些情况下,即使你有参考它。)
2)您可以将数据缓存在内部存储中并不时刷新。 您可以在此处找到有关内部存储及其使用方式的更多信息:http://developer.android.com/guide/topics/data/data-storage.html#filesInternal
基本上,您将响应存储在特定标识符下的内部存储中。下次打开活动时,检查存储是否包含该标识符的数据,如果是,则读取并显示该数据。如果不是,则进行API调用。
请记住,您必须不时刷新缓存。
答案 1 :(得分:0)
我的应用程序也遇到ListViews
问题。我做的是我写了一个自定义适配器,解决了这个问题..
但是,您可以做的是创建一个全局变量并将返回的结果保存到它。当你的应用程序想要调用服务器时,检查变量,如果它是null则进行调用,如果不是,那么只需用已经获取的数据绘制ListView
..
请记住,要实现刷新按钮,您需要跳过检查。