如何在一个新的线程task.onDone()中改变UI元素



我该怎么做呢?

Thread t = new Thread(new Runnable() {
    @Override
    public void run() {
        FacebookConnectTask task = 
                new FacebookConnectTask("facebookId", "token", "email", facebookGender,0, 0);
        task.setOnPreExecuteListener(this);
        task.setOnDoneListener(this);
        task.execute();
    }
});
t.start();
public void onPreExecute() { 
    progressbar.setVisibility(View.VISIBLE);
}
public void onDone() { 
    progressbar.setVisibility(View.GONE);
}

因为我正在打开一个新的线程,我不能改变一个UI元素在它,所以,我怎么能管理做一些事情的UI,当任务开始,当它完成?

您可以在AyncTask中完成这项工作。AsyncTask在另一个线程内执行doInBackground()中的所有内容,该线程无法访问视图所在的GUI。

preExecute()postExecute()为您提供了在这个新线程中发生重提升之前和之后访问GUI的机会,您甚至可以将长操作的结果传递给postExecute(),然后显示任何处理结果。

更多信息:http://developer.android.com/reference/android/os/AsyncTask.html

示例:http://www.vogella.com/articles/AndroidPerformance/article.html

在你的activity

private Handler myHandler=new Handler();

下一个完成的回调

public void onDone() { 
myHandler.post(new Runnable(){
   @Override
   public void run() {
      progressbar.setVisibility(View.GONE)
   }
})
}

但正如已经说过的。AsyncTask更适合它

相关内容

  • 没有找到相关文章

最新更新