在显示数据之前显示旋转进度

时间:2010-10-30 06:15:06

标签: android

我正在使用SQLite显示一些数据。当我点击一个按钮数据来自数据库。这需要一些时间。那时屏幕是黑色的。那时我想在数据显示之前显示旋转微调器。有什么想法吗?

4 个答案:

答案 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/src/com/android/music/MusicPicker.java#569

布局将列表视图放在框架布局中,另一个容器包含进度指示器和标签。更改这些的可见性以控制是否显示列表或进度指示器:

https://android.googlesource.com/platform/packages/apps/Music/+/master/res/layout/music_picker.xml