2

我有一个搜索功能(使用 Web 服务),它需要一段时间才能将数据加载到我的膨胀布局中。我想显示ProgressBar直到从 Web 服务中获取数据。这是一个很小的时间间隔,因此我不为此使用 a ProgressDialog。我浏览了许多帖子和开发指南,但我无法找到在我的应用程序中使用它的方法。我的Spinner布局中有一个。一旦我从微调器下拉列表中选择了一个项目,我就会将字符串传递给搜索函数,该函数会获取数据并将数据加载到膨胀的布局中。

spinner.setOnItemSelectedListener(new OnItemSelectedListener() {

    @Override
    public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
            long arg3) {
        Selection = spinner.getSelectedItem().toString();           

        search(Selection);
    }

我按照开发指南中的说明创建了一个 ProgressBar 处理程序。

private ProgressBar mProgress =  new ProgressBar(SearchActivity.this, null, android.R.attr.progressBarStyleSmall);
private int mProgressStatus = 0;

private Handler mHandler = new Handler();

并说这是一个用于显示的新线程ProgressBar

new Thread(new Runnable() {
         public void run() {
             while (mProgressStatus < 100) {
                 mProgressStatus = doWork();

                 // Update the progress bar
                 mHandler.post(new Runnable() {
                     public void run() {
                         mProgress.setProgress(mProgressStatus);
                     }
                 });
             }
         }
     }).start();

如何跟踪我的搜索功能的进度以显示ProgressBar

感谢您阅读

4

2 回答 2

2

您应该使用AsyncTask而不是线程。一个 asyncTask 让你有一个运行在 UI 线程上的 , 和一个preexecutepostexecute后台运行的。google上有很多 tuts 。publishprogressdoInBackground

试试这个

于 2012-07-24T20:44:01.267 回答
1

使用 anAsyncTask而不是线程。它更易于使用,并提供了一种内置机制来通知进度更新。

查看此问题以获取完整示例:

使用 Android 下载文件,并在 ProgressDialog 中显示进度

于 2012-07-24T20:44:27.753 回答