728x90
프로젝트가 실행은 되는데 동작중에 생기는 에러가 발생하는데 해당 에러는 해결 방법이
아주 간단하지만 자주 발생할 수 있는 문제이므로 잘 짚고 넘어가야 합니다.
E/WindowManager( 1374): Activity com.test.example.MainActivity has leaked window com.android.internal.test.impl.PhoneWindow$DecorView@405446f8 that was originally added here
E/WindowManager( 1374): android.view.WindowLeaked: Activity com.test.example.MainActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@405446f8 that was originally added here
E/WindowManager( 1374): at android.view.ViewRoot.<init>(ViewRoot.java:258)
E/WindowManager( 1374): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:148)
E/WindowManager( 1374): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
E/WindowManager( 1374): at android.view.Window$LocalWindowManager.addView(Window.java:424)
E/WindowManager( 1374): at android.app.Dialog.show(Dialog.java:241)
E/WindowManager( 1374): at com.test.example.MainActivity.showLoading(MainActivity.java:682)
E/WindowManager( 1374): at com.test.example.view.HieraticalHostListView.loadData(HieraticalHostListView.java:84)
E/WindowManager( 1374): at com.test.example.MainActivity.setupListViewStatus(MainActivity.java:479)
E/WindowManager( 1374): at com.test.example.MainActivity.checkZabbixLogin(MainActivity.java:162)
E/WindowManager( 1374): at com.test.example.MainActivity.onResume(MainActivity.java:279)
E/WindowManager( 1374): at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1150)
E/WindowManager( 1374): at android.app.Activity.performResume(Activity.java:3832)
E/WindowManager( 1374): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2110)
E/WindowManager( 1374): at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2135)
E/WindowManager( 1374): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1668)
E/WindowManager( 1374): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
E/WindowManager( 1374): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
해당 에러에 대한 내용은 전부 살필 필요는 없고 어떠한 에러인지만 알면 됩니다.
내용 자체는 해당 프로젝트 내에서 Dialog를 show() 함수를 통해 호출한 뒤에
dismiss 없이 재 호출할 경우에 생기는 문제라고 해석이 가능합니다.
TestDialog test_dialog = new TestDialog();
test_dialog.show();
...
test_dailog.show();
위 구문과 같이 dialog에 대한 종료 없이 다시 호출을 할 경우 생기는 문제로
간단하게 아래와 같이 dialog의 사용이 끝나면 종료해주는 구문만 추가하면 됩니다.
TestDialog test_dialog = new TestDialog();
test_dialog.show();
test_dialog.dismiss();
...
test_dailog.show();
여기에서 dialog를 종료가 어느조건에 따라 실행되지 않으면
다시 해당 에러를 내뿜게 됩니다.
그래서 가장 기본적으로 사용한 dialog는 activity가 종료되거나 멈출 때 dismiss를 호출해줍니다.
@Override
protected void onDestroy() {
super.onDestroy();
test_dialog.dismiss();
}
728x90
반응형
'안드로이드' 카테고리의 다른 글
Need android.permission.BLUETOOTH_SCAN 해결 (12) | 2022.01.24 |
---|---|
패키지명 전체 변경하기 (8) | 2022.01.24 |
[Android] SDK 30 Bluetooth Scan Permission (23) | 2022.01.21 |
[Android] 버튼 하나로 다국어 모드 (30) | 2022.01.20 |
[Android] 버튼 눌림 효과 적용 (30) | 2022.01.19 |
댓글