KakaoAdapter 구현시 메모리릭 문의

안녕하세요 카카오톡, 스토리 공유를 위해서 Kakao SDK 버전은 1.1.10 로 쓰고 있습니다.

KakaoAdapter를 상속받아서 구현하였고 구현된 소스는 아래와 같습니다.

문제는 앱을 사용하다보면서 메모리릭 체크를 하면 아래 소스의 App 클래스의 mTopActivity에서 메모리릭이 발생하고 있는데요

메모리릭현상을 해결하려면 어떻게 했으면 좋을지 의견주시면 감사하겠습니다.

제가 생각한 방법으로는 BaseActivity onDestory함수에서 App.setTopActivity(null) 을 호출하는 방법으로 해보려고 하는데

문제가 없을지 궁금하고요.

카카오 SDK에서는 저는 이런 굳이 엑티비티 인스턴스를 넘겨주는 부분에 대해서 불필요해보이는데 이런 부분을 개선할 계획이 있는지도 궁금합니다.

KakaoAdapter 구현부분
@Override
public IApplicationConfig getApplicationConfig() {

      return new IApplicationConfig() {
        @Override
        public Activity getTopActivity() {
            return App.getInstance().getTopActivity();
        }

        @Override
        public Context getApplicationContext() {
            return App.getInstance();
        }
    };
}

App 클래스 구현 부분

public class App extends Application {

private Activity mTopActivity;

public Activity getTopActivity() {
    return mTopActivity;
}

public void setTopActivity(Activity topActivity) {
    mTopActivity = topActivity;
}

}

BaseActivity ( 앱의 부모 엑티비티 ) 구현 부분

@Override

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    // 현재 실행한 엑티비티 세팅 

    App.getInstance().setTopActivity(this);
}

안녕하세요~ 최근 버전에서는 onDestroy에서 말씀하신 방법으로 App.setCurrentActivity(null)을 통하여 메모리릭을 피하고 있습니다. SDK 버전 업데이트 해주시면 감사하겠습니다~ API level 14부터 콜백을 통하여 현재 화면에 띄워져 있는 액티비티를 가져오는 API가 추가되어서 해당 코드는 곧 (11월 내) 빠질 예정입니다. (최근까지 min SDK 버전 10을 유지하였습니다.) 아래는 해당 API 관련 문서입니다.

https://developer.android.com/reference/android/app/Application.html#registerActivityLifecycleCallbacks(android.app.Application.ActivityLifecycleCallbacks)

제보 감사드리며 더 개선할 부분이 있으시다면 언제든 제보주세요 :slight_smile:

1개의 좋아요

답변주셔서 정말 감사합니다.

11월내에 업데이트 해주시면 꼭 적용해보도록 하겠습니다.

감사합니다.

메모리릭 제거한 버전은 이미 배포되어 있으니 1.1.25로 버전 바꿔주시면 됩니다~ 좋아요 좀 눌러주세요 :slight_smile:

1개의 좋아요

빠른 답변 감사합니다. 일단 버전을 1.1.25 최신버전 적용해보겠습니다. 감사합니다. 좋아요. 언넝 눌렀어요

1개의 좋아요