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(); 
     } 

    }