【问题标题】:Activity leaked info + Progress Dialogue + AndroidActivity 泄露信息 + 进度对话 + Android
【发布时间】:2016-02-10 07:00:00
【问题描述】:

在我的活动中,我没有使用任何异步任务。该活动的目的是将数据从 api 加载到 sqlite 数据库。因此,我在我的活动的 oncreate() 上使用了 LoadData()。 我想在加载数据时实现进度对话,这意味着加载信息的时间。我用过这个

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

我的日志猫

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

我尝试用 getApplicationContext() 或 this 或 getActivity() 替换 OpeningActivity.this 也尝试传递引发异常的上下文,因为无法转换 android.app.application can not cast to android.app.activity

【问题讨论】:

    标签: android-intent android-activity android-asynctask progressdialog android-context


    【解决方案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();
            }
    
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-03-16
      • 1970-01-01
      • 1970-01-01
      • 2021-04-08
      • 2012-02-21
      • 2012-04-04
      • 2018-01-26
      相关资源
      最近更新 更多