0

我有一个 android 应用程序,在我的一项活动中,我正在调用“客户”,这个调用是对外部 API 进行的,当我得到响应时,我将它作为 JSON 对象获取。我遇到的问题是我在活动中有一个 ListView,当您单击其项目时,它会向您显示详细信息,但是当您点击后退按钮时,我必须再次拨打电话以填充它。在三星 Galaxy 4S 中,它似乎保留了列表视图的数据,但在 HTC android 中令人难以置信的是它是空白的。所以我所做的是,让它重新绑定 OnResume(),这解决了两者的问题,但结果是再次调用该服务器。当它有 10 或 100 个客户时,这并不重要,但我知道有些帐户有多达 5000 个,我相信它会崩溃。

我有哪些选项可以提高 Android 在这个问题上的性能?我尝试了一个静态变量,但在某些时候该对象也被清除了。

Android应用程序通常如何处理从API检索数据并且需要通过应用程序存储它们并且不需要再次调用相同信息的情况?,我在考虑静态对象,但我想确保我以正确的方式做到这一点。

4

2 回答 2

1

你有几个选择。

1)您可以将数据缓存在内存中。例如,您可以制作静态缓存或缓存 Activity 或 App 对象中的数据。如果您只在一个视图中执行此操作,并且数据不多,那么这可能是一个不错的解决方案。但是,如果您必须为许多活动执行此操作并且必须缓存大量数据,您可能需要选择选项 2。在 android 的内存中也存储数据,并不意味着它不会是垃圾收集(在某些情况下,即使您有参考。)

2)您可以将数据缓存在内部存储中并不时刷新。您可以在此处找到有关内部存储以及如何使用它的更多信息:http: //developer.android.com/guide/topics/data/data-storage.html#filesInternal

基本上,您将响应存储在特定标识符下的内部存储中。下次打开活动时,检查存储是否具有该标识符的数据,如果是,则读取并显示它。如果不是,则进行 API 调用。

请记住,您必须不时刷新缓存。

于 2013-07-05T21:22:52.273 回答
0

我的申请也有问题ListViews。我所做的是我编写了一个自定义适配器并解决了这个问题..

但是,您可以做的是创建一个全局变量并将返回的结果保存到其中。当您的应用程序要调用服务器时,请检查变量,如果它为 null 则进行调用,如果不是,则只需ListView使用已获取的数据绘制 ..

请记住,要实现刷新按钮,您需要跳过检查。

于 2013-07-05T21:25:25.490 回答