프로그래밍/Android
[Android] This Handler class should be static or leaks might occur
DwEnn
2017. 10. 29. 20:10
728x90
반응형
This Handler class should be static or leaks might occur
안드로이드에서 Handler 오브젝트는
모든 스레드 반복문에서 참조하는데
어느 한 곳에 종속되면 안되기 때문이다.
그렇게 되면 GC가 되지 않아 Memory Leak이 계속해서 발생하게 되는 것이다
이전 소스
1 2 3 4 5 6 | Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); } }; | cs |
Handler를 상속받은 클래스를 하나 만들어 static 등록
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | private final MyHandler handler = new MyHandler(this); private static class MyHandler extends Handler { private final WeakReference<MainActivity> weakReference; public MyHandler(MainActivity activity) { this.weakReference = new WeakReference<MainActivity>(activity); } @Override public void handleMessage(Message msg) { super.handleMessage(msg); } } | cs |
반응형