我有两个不工作的 AsyncTask。我做错了一定有一些共同点。
我的第一个活动需要很长时间才能加载,所以我希望有一个 progressDialog/Bar,但它失败了。我在我的 onCreate 中访问 AsyncTask
new HeavyWorker(this).execute();
public class HeavyWorker extends AsyncTask < String , Context , Void > {
private ProgressDialog progressDialog ;
private Context targetCtx ;
public HeavyWorker ( Context context ) {
this.targetCtx = context ;
// this.needToShow = true;
progressDialog = new ProgressDialog ( targetCtx ) ;
progressDialog.setCancelable ( false ) ;
progressDialog.setMessage ( "Retrieving data..." ) ;
progressDialog.setTitle ( "Please wait" ) ;
progressDialog.setIndeterminate ( true ) ;
}
@ Override
protected void onPreExecute ( ) {
progressDialog.show ( ) ;
}
@ Override
protected Void doInBackground ( String ... params ) {
// Do Your WORK here
在正常的
“public void onCreate(Bundle savedInstanceState)”区域中,下面的这些行可以正常工作
Ls = new LoadSettings(CreateAppointment.this);
gs = new GlobalSubs();
TimeZoneList();
此行动态填充 Spinner 框并使其停止工作,因此我将其注释掉。
// createTimezone();
ZoneList(Ls.getCountryZone());
此行还动态填充微调框,因此我将其注释掉
// createZone();
InitialiseUI();
CreateFileName();
return null ;
}
这个区域从来没有到达过?
@ Override
protected void onPostExecute ( Void result ) {
if(progressDialog != null && progressDialog.isShowing()){
progressDialog.dismiss ( ) ;
}
}
}
我的第二页因同样的问题而失败。
我还尝试在设置页面中使用稍微不同的代码。现在修复:
//
private class MyClass extends AsyncTask<Void, Void, Void>{
ProgressDialog mProgressDialog;
public MyClass(){
mProgressDialog = new ProgressDialog(Preferences.this);
mProgressDialog.setMessage ("Please Wait While Saving");
mProgressDialog.setTitle("Saving");
//
@Override
protected void onPreExecute() {
super.onPreExecute();
mProgressDialog.show(Preferences.this, "Saving", "Please Wait a Sec");
}
@Override
protected Void doInBackground(Void... params)
{
saveSettings();
return null;
}
@Override
protected void onPostExecute(Void unused) {
它起作用的唯一方法是当我注释掉该行并更改为不同的活动时
// mProgressDialog.dismiss();
Toast.makeText(Preferences.this, "Your Settings Where Saved.", Toast.LENGTH_SHORT).show();
gotoMainPage();
}
}
private void gotoMainPage(){
Intent a = new Intent(this, Main_entry.class);
finish();
startActivity(a);
}