Activity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@46029dd0 that was originally added here

大憨熊 提交于 2019-11-29 14:46:23

问题


I am getting this error : has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@46029dd0 that was originally added here I have net connection in emulator, check it out browser by opening websites.

I am getting error at the line of processdialog.

@SuppressLint("NewApi")
private class TheTask extends AsyncTask<Void, Void, Void> {

    @Override
    protected void onPreExecute() {
        dialog = ProgressDialog.show(Register.this, "",
                "Registering... Please wait...", true);
    }

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

        request = new SoapObject(NAMESPACE, METHOD_NAME);

        name = new PropertyInfo();
        name.setName("Name");
        name.setValue(Name);
        name.setType(String.class);
        request.addProperty(name);

        SoapSerializationEnvelope envp = new SoapSerializationEnvelope(
                SoapEnvelope.VER11);
        envp.dotNet = true;
        envp.setOutputSoapObject(request);
        HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
        try {
            androidHttpTransport.call(SOAP_ACTION, envp);
            SoapPrimitive response = (SoapPrimitive) envp.getResponse();
            Response = response.toString();

        } catch (Exception e) {
            textValidation.setText(e.toString());
        }

        return null;
    }

    @Override
    protected void onPostExecute(Void result) {

        if (dialog != null) {
            dialog.dismiss();
            dialog = null;
        }
        }
    }
}

回答1:


This error will happen if your activity has been destroyed but you dialog is still showing. So You have added these code in your activity's onDestroy()

@Override
public void onDestroy() {
    super.onDestroy();
    if (dialog != null) {
        dialog.dismiss();
        dialog = null;
    }
}



回答2:


Possibly Its Because of you are writing

textValidation.setText(e.toString());

inside the function,

doInBackground()

which is updating UI which is allowed by android in doInBackground() method. So somehow if you put this line in

postExecute()

then this problem will get resolved.



来源:https://stackoverflow.com/questions/16768721/activity-has-leaked-window-com-android-internal-policy-impl-phonewindowdecorvie

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!