이 오류란 무엇이며 왜 발생하나요?
05-17 18:24:57.069: ERROR/WindowManager(18850): Activity com.mypkg.myP has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@44c46ff0 that was originally added here
05-17 18:24:57.069: ERROR/WindowManager(18850): android.view.WindowLeaked: Activity ccom.mypkg.myP has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@44c46ff0 that was originally added here
05-17 18:24:57.069: ERROR/WindowManager(18850): at android.view.ViewRoot.<init>(ViewRoot.java:231)
05-17 18:24:57.069: ERROR/WindowManager(18850): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:148)
05-17 18:24:57.069: ERROR/WindowManager(18850): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
05-17 18:24:57.069: ERROR/WindowManager(18850): at android.view.Window$LocalWindowManager.addView(Window.java:424)
05-17 18:24:57.069: ERROR/WindowManager(18850): at android.app.Dialog.show(Dialog.java:239)
05-17 18:24:57.069: ERROR/WindowManager(18850): at com.mypkg.myP$PreparePairingLinkageData.onPreExecute(viewP.java:183)
05-17 18:24:57.069: ERROR/WindowManager(18850): at android.os.AsyncTask.execute(AsyncTask.java:391)
05-17 18:24:57.069: ERROR/WindowManager(18850): at com.mypkg.myP.onCreate(viewP.java:94)
05-17 18:24:57.069: ERROR/WindowManager(18850): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
05-17 18:24:57.069: ERROR/WindowManager(18850): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2544)
05-17 18:24:57.069: ERROR/WindowManager(18850): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2621)
05-17 18:24:57.069: ERROR/WindowManager(18850): at android.app.ActivityThread.access$2200(ActivityThread.java:126)
05-17 18:24:57.069: ERROR/WindowManager(18850): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1932)
05-17 18:24:57.069: ERROR/WindowManager(18850): at android.os.Handler.dispatchMessage(Handler.java:99)
05-17 18:24:57.069: ERROR/WindowManager(18850): at android.os.Looper.loop(Looper.java:123)
05-17 18:24:57.069: ERROR/WindowManager(18850): at android.app.ActivityThread.main(ActivityThread.java:4595)
05-17 18:24:57.069: ERROR/WindowManager(18850): at java.lang.reflect.Method.invokeNative(Native Method)
05-17 18:24:57.069: ERROR/WindowManager(18850): at java.lang.reflect.Method.invoke(Method.java:521)
05-17 18:24:57.069: ERROR/WindowManager(18850): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
05-17 18:24:57.069: ERROR/WindowManager(18850): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
05-17 18:24:57.069: ERROR/WindowManager(18850): at dalvik.system.NativeStart.main(Native Method)
활동을 종료한 후 대화 상자를 표시하려고 합니다.
[편집]
이 질문은 안드로이드 개발자를 위해 구글에서 가장 많이 검색되는 질문 중 하나입니다, 따라서 댓글에서 몇 가지 중요한 사항을 추가하여 향후 조사자가 댓글 대화를 깊이있게 진행하지 않고도 더 도움이 될 수 있습니다.
답변 1:
액티비티를 종료한 후 대화 상자를 표시하려고 합니다.
답변 2 : 답변 2**
이 오류는 일부 상황에서 약간 오해의 소지가 있을 수 있습니다. 대답은 여전히 완전히 정확합니다) - 즉, 제 경우에는 처리되지 않은 예외가 비동기 태스크에서 발생했습니다. 활동이 종료 된 다음 열린 진행률 대화 상자가 다음과 같이 발생했습니다. 예외... 그래서 '실제' 예외는 로그의 조금 더 앞부분에 있었습니다.
답변 3
종료하기 전에 생성 한 대화 상자 인스턴스에서 dismiss ()를 호출하십시오. 활동(예: onPause() 또는 onDestroy())에서)
단순한 실수를 통해 얻을 수 있습니다 / 덤 승인자 (예를 들어) 이 idfsysobject. 호출하십시오 스크립트종료 () ',' 한 '실수로' 거쳐 표시되었는지 알레르디아로그 크리스티나랑 경우 브레이크 매입옵션 문을 스위치였습니다 발표했다.
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.new_button:
openMyAlertDialog();
break; <-- If you forget this the finish() method below
will be called while the dialog is showing!
case R.id.exit_button:
finish();
break;
}
}
마침 ' ()' 이 방법을 사용하면 '활동,' 하지만 '여전히' 알레르디아로그 닫으십시오 디스플레이하여!
그냥 그냥 써서 다운되어도 이러한 문제를 해결한 다음 코드:
@Override
public void onDestroy(){
super.onDestroy();
if ( progressDialog!=null && progressDialog.isShowing() ){
progressDialog.cancel();
}
}
기본적으로 있는 클래스, 그리고 이렇게 오네스트로이 메서드로부터 오버라이드합니다 프로그레스디아로그 시작한 것입니다. It 관련 활동이 유출 의혹은 " window"; 문제다.
이 질문에 대한 정확한 등이 모두 있지만, 실제로 가져다줄래요 조금 복잡한 이유를 알 것 같다. 약 2 시간 정도 플레이 한 후 그 이유는 이 오류 (내 경우에는) hit me.
다른 답을 이미 알고 있는 '을 읽고 있습니다,) 는 오류 창이 열려 []' 즉, x 는 유출 decorview@d9e6131 대화상자의 경우 앱 폐쇄되었다. 그런데 왜?
이 때문에 일부 코드에 버그가 있는 납 (lead to your app 닫기와 대화상자의 인해 문을 열 수 있을 뿐 아니라 다른 앱을 동시에 남은 오류:.
, 와 같은 다른, 다른 한 오류가 발생합니다. 이로 인해 DOMINOS!
그는 이러한 로깅합니다 점점 내 비디오 플레이어 응용 프로그램. 반면 이러한 메시지를 던진 것으로 비디오 플레이어 폐쇄되었다. 흥미롭게도, 내가 한 번 로깅합니다 행하였 얻을 수 있는 몇 가지 런입니다 무순서 한다. 내 애플리케이션 '도' 프로그레스디아로그 mediaagent 믿지아니하며 않습니다. 마지막으로, 나는 attaboy 이 문제를 중심으로 아래 구축상의.
@Override
protected void onPause()
{
Log.v("MediaVideo", "onPause");
super.onPause();
this.mVideoView.pause();
this.mVideoView.setVisibility(View.GONE);
}
@Override
protected void onDestroy()
{
Log.v("MediaVideo", "onDestroy");
super.onDestroy();
}
@Override
protected void onResume()
{
Log.v("MediaVideo", "onResume");
super.onResume();
this.mVideoView.resume();
}
'콜' 을 (를) 수 () '와' 마비데로비베스파우스 오버라이드합니다 로 파우스 가시도로 '을' '세트' 다. 이런 식으로 해결 할 수 있는 한, '창' " " 활동이 것이다. 로그 오류 문제.
내가 그 동안 내 상황은 이 같은 문제가 있으면 페이지이므로 and found "만약 내가 '에서' 정의 '라는 다른 스크립트종료 전에 블록이어야 lan-alert 기입란.
따라서 단순히 '무시' wouldn& 호출하십시오 # 39, t 작동합니까 때처럼 hasn& # 39, t 작성된 아직이라구요) , 와 # 39 의 했으나 이후 판독값 알렉스랑 Volovoy& 오토메이티드 lan-alert 기입란 전송되었기 실현 가능성이 있습니다. 마침 그 안의 '찾았다' 블록, 그리고 그 직후 추가하기에서는 기술서임을 반품하십시오 경우 문제가 해결되었습니다.
하지만 일단 호출됨 끝장내버려 중지함 설명하였노라 생각해봤죠 뒤 저기예요 doesn& # 39, t. 이 끝까지 갈 것, 그리고 코드 블록 it& # 39 의 완료.
그래서, 가끔 it& 확인표시를 구현할 수 있는 상황에서, ll put a return 문을 나설 때 어떻게 해야 하기 전에 # 39 스크립트종료 스크립트종료 직후 일부 코드 또는 it& # 39, ll 계속 진행되고 있으며 행동할 수 있는 말 없는 스크립트종료 패널이라고 했습니다 같은 코드 블록 라고도 했다. 그래서 제가 이상한 사람들 모두 가져오는 오류가 있었다.
private picked(File aDirectory){
if(aDirectory.length()==0){
setResult(RESULT_CANCELED, new Intent());
finish();
return;
}
AlertDialog.Builder alert= new AlertDialog.Builder(this); // Start dialog builder
alert
.setTitle("Question")
.setMessage("Do you want to open that file?"+aDirectory.getName());
alert
.setPositiveButton("OK", okButtonListener)
.setNegativeButton("Cancel", cancelButtonListener);
alert.show();
}
생각해봤죠 I&; d # 39 이 같은 행동을 한 후 이 fs@snapa 다음과 같은 추가 및 I& 생각해봤죠 않았다 마침 명령을 다르게 다른 사람들이 있다고 생각하는 것 같아요; d # 39 동일합니까 I did before I 이 발견했다.
하지만 호출되었을 완료했으면 아니라 표시하십시오 시도하시겠습니까 경고를 할 수 있는 특정 인스턴스에서는 활동 및 활동 시작 / 서비스 또는 고만하세요 봅니다.
OldActivity instance;
oncreate() {
instance=this;
}
instance.finish();
instance.startActivity(new Intent(ACTION_MAIN).setClass(instance, NewActivity.class));
이 때 나를 상태입니까 프로그레스디아로그 '에서' 라이너스타스크 '' 을 사용하고 있습니다. 실제로 ' () 메서드를 사용하여' '나는 숨기십시오 롱포스테스코트'. 답을 따라 @Alex 볼로보이 데릭쉐퍼드와 사용할 수 있는 '무시' () '을 (를)' 프로그레스디아로그 제외시키려면 롱포스테스코트 및 해당 수행되.
progressDialog.hide(); // Don't use it, it gives error
progressDialog.dismiss(); // Use it
이 문제로 인해 일반적으로 테스트타사의 진행율 대화: 다음 중 하나를 사용하여 사용자의 활동을 방법으로 이 문제를 해결할 수 있습니다.
// 1):
@Override
protected void onPause() {
super.onPause();
if ( yourProgressDialog!=null && yourProgressDialog.isShowing() )
{
yourProgressDialog.cancel();
}
}
// 2) :
@Override
protected void onDestroy() {
super.onDestroy();
if ( yourProgressDialog!=null && yourProgressDialog.isShowing()
{
yourProgressDialog.cancel();
}
}
당초 '창' 이 " ", 유출, 활동에 덧붙였다. 오류가 발생할 때 단순화표현 보여주는 '경고' 는 '활동,' 이후 사실상 마쳤다.
두 가지 옵션이 있습니다 아파이크: