我正在使用SQLite显示一些数据。当我点击一个按钮数据来自数据库。这需要一些时间。那时屏幕是黑色的。那时我想在数据显示之前显示旋转微调器。有什么想法吗?
答案 0 :(得分:1)
首先,我建议您查看 AsyncTask 页面,以便您完全了解 AsyncTask 。
现在,实现 AsyncTask ,如下所示:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
new performBackgroundTask().execute();
}
private class performBackgroundTask extends AsyncTask <Void, Void, Void>
{
private ProgressDialog Dialog = new ProgressDialog(main.this);
protected void onPreExecute()
{
Dialog.setMessage(getString("Please wait..."));
Dialog.show();
}
protected void onPostExecute(Void unused)
{
Dialog.dismiss();
// displaying all the fetched data
}
@Override
protected Void doInBackground(Void... params)
{
// implement long-running task here i.e. select query/fetch data from table
// fetch data from SQLite table/database
return null;
}
}
享受!!!
答案 1 :(得分:1)
Android提供了ProgressDialog来完成您想要的工作。
答案 2 :(得分:0)
您不应该在UI线程中执行长时间运行的任务,因为这会阻止UI重绘并使应用看起来没有响应。
使用AsyncTask在后台执行长时间运行的任务,同时仍然更新屏幕。
答案 3 :(得分:0)
您可以将标准音乐选择器视为如何执行此操作的一个示例: https://android.googlesource.com/platform/packages/apps/Music/+/master/src/com/android/music/MusicPicker.java
除了整个“查询必须在主UI线程上完成”之外,这在首次加载数据时显示了不确定的进度,一旦数据可用就淡入列表。启动查询的功能如下:
https://android.googlesource.com/platform/packages/apps/Music/+/master/src/com/android/music/MusicPicker.java#581
布局将列表视图放在框架布局中,另一个容器包含进度指示器和标签。更改这些的可见性以控制是否显示列表或进度指示器:
https://android.googlesource.com/platform/packages/apps/Music/+/master/res/layout/music_picker.xml