我该怎么做呢?
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更适合它