지금 메모리 오버 플로 나서 계속 죽는것 같은데...
제가 자바나 안드로이드를 공부 한 적이 없어서... 이유를 잘 모르겠네요 ㅠ
이미지가 너무 크거나 아니면 어디서 인스턴스가 반복 생성되는것 같은데...
지금 후자쪽이 더 의심이 되는데...
setOn~ 이 메소드들은 호출 할 때마다 인스턴스가 새로 생성이 되는건가요?
그리고 system.gc() 이 메소드 콜 할때 반드시 가비지 콜렉터 해주는거 아니고 우선순위만 높여주는거 맞나요?
메모리 쌓여서 그런다면 코드에서 메모리를 비워주는걸 넣어보세요.
메모리 관리를 직접해주는것도 앱 실행시 성능을 향상 시켜준다고 하드라구요
메모리 비워주는게 system.gc();로 알고 있는데 이거 해도 안 되더라구요
이거 말고 다른 방법 아시는거 있으시면 조언 부탁드립니다.
gc는 멍청해서 사용하지않더라도 참조하고있는 객체는 메모리를 비워주지않습니다...
1. setOn어쩌고
메서드 자체에서 인스턴스를 생성하지는 않지만, 그 전에 리스너를 생성해야 하니 당연히 뭔가 생성되긴 합니다.
물론 그건 님이 명시적으로 선언하신겁니다.
설계를 아주 잘못하지 않았다면 저렇게 조그만 리스너 클래스 때문에 앱이 죽는 일은 거의 없습니다.
2.
gc를 제대로 활용하시려면 softreference와 weakreference를 알아야 합니다.
객체 레퍼런스를 적절한 타이밍에 null로 해주는 것도 매우 중요하구요. 구글링 하심 금방 알수 있습니다.
로그인 유지
메모리 쌓여서 그런다면 코드에서 메모리를 비워주는걸 넣어보세요.
메모리 관리를 직접해주는것도 앱 실행시 성능을 향상 시켜준다고 하드라구요