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