2010-10-30 62 views
1

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

回答

1

的Android为实现你想要的东西提供了一个ProgressDialog

0

您不应该在UI线程中执行长时间运行的任务,因为这会阻止UI重绘并使应用程序看起来没有响应。

使用AsyncTask在后台执行长时间运行的任务,同时仍然更新屏幕。

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; 
      } 
    } 

享受!

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