我创建了一个单独的类,它扩展了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;
}
}
Thanks in advance.