0

在我的活動中,我沒有使用任何asynctask。該活動的目的是將數據從api加載到sqlite數據庫。因此,我在我的活動的oncreate()上使用了LoadData()。 我想在加載意味着加載信息的時間的數據時執行進度對話。我用這個活動泄露信息+進度對話+ Android

pd = new ProgressDialog(OpeningActivity.this, ProgressDialog.STYLE_SPINNER); 
    pd.setIndeterminate(true); 
    pd.show(OpeningActivity.this, AppConstants.WAITTAG, AppConstants.WAITDET); 

要完成progressDlg: 很少有其他人是否在案件我的活動。在此基礎上,我完成對話活動,並呼籲新的活動意圖這樣

if (db.isTableExists(db3,EDU_PROVIDER_TABLE)){ 
       pd.dismiss(); 
       Intent a = new Intent(getApplicationContext(),PlaceChoiceActivity.class);//Default Activity 
       a.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
       //getApplicationContext().startActivity(a); 
       (getApplicationContext()).startActivity(a); 

       this.finish(); 
      } 

我logcat的

ctivity.OpeningActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{41dfc8f0 V.E..... R.....ID 0,0-480,243} that was originally added here 
                      android.view.WindowLeaked: Activity demo.kolorob.kolorobdemoversion.activity.OpeningActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{41dfc8f0 V.E..... R.....ID 0,0-480,243} that was originally added here 

我試圖用replaceOpeningActivity.this getApplicationContext()或此或getActivity()也試圖通過拋出異常的上下文無法投射android.app.application can not cast to android.app.activity

回答

1

試試這個 您傳遞錯誤的上下文只是傳遞活動上下文。

class ShowProgress extends AsyncTask<Void, Void, Void>{ 

     ProgressDialog pdialog = new ProgressDialog(MainActivity.this); 


     @Override 
     protected void onPreExecute() { 

      pdialog.setMessage("message"); 
      pdialog.setTitle("title"); 
      pdialog.show(); 
     } 

     @Override 
     protected Void doInBackground(Void... params) { 

      try { 
       Thread.sleep(3000); 
      } catch (InterruptedException e) { 
       e.printStackTrace(); 
      } 

      return null; 
     } 

     @Override 
     protected void onPostExecute(Void result) { 

      if(pdialog != null && pdialog.isShowing()){ 
       pdialog.dismiss(); 
       } 

      insertNewData(); 
     } 

    }