android.view.WindowLeaked 창 유출 이상 해결 방안

1450 단어 android 개발
android.view.윈도 Leaked 창 유출 이상 해결 방안: 안드로이드.view.윈도 Leaked는 글자 그대로 보면 윈도 Leaked는 아마도 하나의 창이 누설되었다는 것이다. 즉, 우리가 흔히 말하는 메모리 누설인데 왜 창이 누설될까?
원인: 안드로이드의 모든Activity에는 윈도우 관리자 창 관리자가 있다는 것을 알고 있습니다. 마찬가지로 모든Activity 위에 구축된 대화상자, 팝업 윈도우에도 해당하는 윈도우 관리자 창 관리자가 있습니다.대화상자, Popup Windown이Activity에서 벗어날 수 없기 때문에 단독으로 존재하기 때문에, 어떤 Dialog나 어떤 Popup Window가 표시될 때finish()에 가서 이 Dialog(또는 Popup Window)의 Activity를 불러올 때, 이 Dialog(또는 Popup Window)의 Window Manager는 부속할 수 있는 사람이 없기 때문에,그래서 창 관리자가 누설됐어요.
해결 방법: 어떤Activity를 닫기 전에 위에 첨부된Dialog나 PopupWindow가 닫혔는지 확인하십시오 (dismiss).
위의 네가 만나면 쉽게 해결할 수 있어!하지만 제가 개발하는 과정에서 이런 이유가 아니었습니다. 제 이유는MainActivity에 창이 넘친다는 것을 알렸기 때문입니다. 저는MainActivity에 몇 개의fragment가 있는데 fragment에 다이아로그를 사용했습니다. 저는 규칙적으로 show를 먼저 호출하고 dismiss를 사용했습니다.MainActivity도 사라지지 않았어finish.나중에 나는 내가MainActivity에서 이 방법을 사용해서 발생한 것을 발견하였다
Intent intent = new Intent(this, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

FLAG_ACTIVITY_NEW_TASK가 이 로고를 설정하면 이 activity는 새task의 역사 창고 중 첫 번째 activity가 됩니다.이task는 원자 그룹activities를 정의하여 사용자가 제거할 수 있도록 합니다.각종tasks는 앞이나 뒤로 옮길 수 있다.특정task에서 모든activities는 항상 같은 순서를 유지합니다.
위의 설명은MainActivity가 다시 만들어졌다는 것이다. 그러면 원래의MainActivity는finish에 의해 만들어졌지만 dialog가 먼저 dismiss에 의해 만들어지지 않았기 때문에android가 되었다.view.윈도 Leaked 창이 이상하게 유출되었습니다.

좋은 웹페이지 즐겨찾기