我已经阅读了许多提出类似问题的SO答案,但我相信我的问题不同。我必须从云中加载 70-80K 记录,并在ListView
中将其显示给用户。我想做的一些事情:
我不想在用户滚动时使用更多Button
加载或加载更多对象,因为我有来自AZ的索引,因此用户可以启动我的应用程序并单击Z和数据他应该在场/可以使用。
我考虑过使用启动画面预先获取数据,但我想知道是否真的有其他优化方法来获取如此庞大的数据。
我不想使用加载进度条挂起UI线程。
我同意这可能要求得太多,但我只是想看看是否有人有一种非常有效的方式来做到这一点。我对涉及Web服务后端修改的想法持开放态度,所以如果你有一个有效的方法来实现这一点,使用Web服务的一些修改,这对我来说也没关系。
如果有帮助,请查看您的默认联系人应用,它会准备好所有数据,并在您打开时提供给您。您可以直接使用索引导航到Z部分。只需在应用程序中使用70k条目即可。
提前致谢!
答案 0 :(得分:1)
这是我在Tamal Mukherjee和Roman Nurik的帮助下找到的最佳解决方案。
Tamal的解决方案:
只需加载5-10行/字母。添加“更多”按钮或处理滚动事件并动态加载。使用SQLite存储数据。使用后台线程填充数据库。
Roman Nurik的解决方案:
有80k行,字母表中每个字母超过1000个项目。看起来你需要的不仅仅是字母索引,以使这个UI可用。为什么不提供按类型过滤?这将导致更多的HTTP请求,但可能会带来更好的用户体验。
所以我想我的实现将是两者的结合。
答案 1 :(得分:0)
请按照以下步骤操作: -
1-使用IntentService
在启动画面上调用API。
2-使用静态 broadCasting并使用onRecieve()
BroadCastReciever
方法中的ORMLite将API响应保存到sqlitedb中。
3-确保接收者应该有单独的课程。
4-使用Loader Manager更新ListView
。