Android应用程序有两项活动。
活动A显示项目列表。 活动B显示了有关特定项目的一些细节。
详细信息从较大的SQLite数据库加载。用于生成数据的查询在合理的电话上花费大约250到500毫秒。
我的问题是在提供良好用户体验的同时加载数据的最佳做法是什么。
目前,Activity B在创建时执行AsyncTask。任务完成后,它会创建许多视图并将其添加到屏幕上。 UI线程上没有加载任何数据。
向用户打开活动B,使用漂亮的标准缩放动画,然后在几分之一后,视图将填充数据。它看起来有点废话IMO。
另一种选择是在UI线程上加载数据。如果我在正确的时间执行此操作,则屏幕将冻结,并且数据加载时选择的列表项为250毫秒,然后视图会随标准缩放动画而变化,但它会缩放到已填充的视图中。它看起来好多了,但我阻止了不理想的UI线程。
当新视图尚未准备就绪时,实现良好过渡的最佳方法是什么?
答案 0 :(得分:2)
要么progress dialog
加载数据任务,如果不加载......
您可以使用onProgressUpdate()
AsyncTask
方法将数据库中的结果数据间接更新为UI ..
protected void onProgressUpdate(Integer... progress) {
//this runs in UI thread so its safe to modify the UI
myTextField.append("finished call " + progress);
}
•onProgressUpdate
- 每当从后台任务调用publishProgress时调用,用于将进度报告回UI。
此外,您可以使用LIMIT
的{{1}}和OFFSET
子句从sqlite database
中使用绑定数量的返回结果从数据库中获取数据,以便从中获取大量数据数据库..
示例:
select query