developer tip

Android에서 정적 변수 사용

copycodes 2021. 1. 8. 08:31
반응형

Android에서 정적 변수 사용


Android에서 정적 변수를 사용하는 것이 권장됩니까? 예를 들어 Java에서 Singleton 패턴을 구현하면 일반적으로 다음을 수행합니다.

private static A the_instance;
public static A getInstance() {
    if (the_instance == null) {
       the_instance = new A();
    }
    return the_instance;
}

또한 Android JVM은 언제 이것을 정리합니까?

감사합니다.


static필드는 Class인스턴스 전체에 연결되며, 차례로 ClassLoader클래스를로드 한에 연결됩니다 . the_instance전체 ClassLoader가 재생 될 때 언로드됩니다 . Android가 앱을 파괴 할 때 (백그라운드로 들어가거나 일시 중지되지 않고 완전히 종료 될 때) 이런 일이 발생한다고 90 % 확신합니다.

따라서 앱이 실행되는 한 지속되는 것으로 생각하십시오. Singleton이 좋은 생각인가요? 사람들은 다른 견해를 가지고 있습니다. 나 자신을 적절하게 사용하면 괜찮다고 생각합니다. Android에서는 대답이 많이 바뀌지 않는다고 생각합니다. 메모리 사용량은 그 자체로 문제가 아닙니다. 메모리에 많은 항목을로드해야하는 경우 Singleton에 데이터를 캡슐화하는지 여부에 관계없이 문제가 될 수도 있고 그렇지 않습니다.


정적 변수는 괜찮다고 생각합니다.

이것은 Android 문서가 말하는 것입니다.

http://developer.android.com/guide/appendix/faq/framework.html

단일 애플리케이션 내에서 활동 / 서비스간에 데이터를 어떻게 전달합니까?

공개 정적 필드 / 메서드

활동 / 서비스에서 데이터에 액세스 할 수 있도록하는 또 다른 방법은 공용 정적 필드 및 / 또는 메서드를 사용하는 것입니다. 애플리케이션의 다른 클래스에서 이러한 정적 필드에 액세스 할 수 있습니다. 개체를 공유하기 위해 개체를 생성하는 활동은이 개체를 가리 키도록 정적 필드를 설정하고이 개체를 사용하려는 다른 활동은이 정적 필드에 액세스합니다.


이러한 접근 방식이 제한된 메모리를 사용할 수있는 모바일 플랫폼에 적합한 지 잘 모르겠습니다. 응용 프로그램이 멀티 태스킹 지원 장치에서 실행된다는 것은 말할 것도 없습니다.

이 접근 방식은 장치의 메모리를 낭비 할 수 있지만이를 뒷받침 할 문서가 없습니다. 나보다 더 많은 교육을받은 사람이 생각을 공유 할 수있을 것입니다.


다른 사람들이 말하는 것과는 달리 괜찮습니다. 물론 구조가 약간 있습니다. 공식 googlesamples / android-architecture 저장소에서는 todo-mvp-clean (MVP 패턴을 구현하고 Clean Architecture 원칙을 따르는 Todo 앱)에서 사용됩니다. 파일을 확인하십시오 .

여러분이 볼 수있는 것은 싱글 톤 게터를 참조하는 많은 정적 메서드입니다.

현대적이고 오류가 적고 편리한 대안은 Dagger DI 프레임 워크입니다.


아니, 하지마! 싱글 톤은 반 patern입니다! . 대신 프레임 워크 (예 : Dagger 또는 Roboguice 를 통해 )를 통하거나 인스턴스화 된 객체를 명시 적으로 전달하여 종속성 주입을 사용 하십시오.

참조 URL : https://stackoverflow.com/questions/2475978/using-static-variables-in-android

반응형