【发布时间】:2014-02-27 00:49:45
【问题描述】:
我创建了一个单独的类,它扩展了我在整个应用程序中用于通信的 AsyncTask。我班级的每个活动都使用此 AsyncTask 类进行通信。我想在通信进行时显示 ProgressBar(活动指示器)。如果我在使用通信类的活动中显示和隐藏 ProgressBar,则 ProgressBar 会冻结,直到通信完成。有什么方法可以在 AsyncTask 类的屏幕中间显示 ProgressBar,这样它就不会冻结,并且用户知道后台发生了一些事情。我正在使用以下代码:
public class MyActivity extends Activity {
ProgressBar spinner;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.my_activity_layout);
spinner = (ProgressBar)findViewById(R.Id.progressbar);
spinner.setVisibility(ProgressBar.INVISIBLE);
}
protected void onResume()
{
super.onResume();
}
public void buttonClickHandler(View target){
try{
spinner.setVisibility(ProgressBar.VISIBLE);
String output = new SendRequest().execute().get();
spinner.setVisibility(ProgressBar.INVISIBLE);
}catch(Exception ex){
System.out.println("buttonClickHandler exception: "+ex);
}
}
}
AsyncTask 类是:
public class SendRequestExample extends AsyncTask<ArrayList<String>, Void, String> {
public String result;
protected String doInBackground(ArrayList<String>... params) {
// doing communication
...
return result;
}
}
提前致谢。
【问题讨论】:
标签: android android-layout android-asynctask android-activity android-progressbar