2013-02-21 2 views
0

전역 변수 (https://stackoverflow.com/a/708317/1709805)를 저장하기 위해 Application 클래스를 확장하는 패턴을 사용하고 있습니다. 내 안드로이드 구성 요소 (Activity, Fragment, Service, ecc)에서 ((MyApp) getApplicaction())를 사용하여 액세스하지만 내 프로젝트에서 나는 (분명히) 그 방법을 사용할 수없는 많은 도우미 클래스가 있습니다. 이 문제를 해결하기 위해 응용 프로그램을 반환하는 정적 메서드를 decalred 있습니다. 다음 코드입니다.Android : get static method with application

public class MyApp extends Application{ 

    private static MyApp app; 

    @Override 
    public void onCreate(){ 
     super.onCreate(); 
     app = this; 
    } 

    public static MyApp getApp() { 
     return app; 
    } 
} 

좋은 패턴입니까? 더 나은 방법으로 내 목적을 달성하기위한 제안? 고마워요

답변

3

그것은 나쁜 습관입니다.

전체 응용 프로그램에서 MyApp app = (MyApp)getApplicationContext();을 사용하면됩니다. 다른 비 안드로이드 구성 요소 클래스에 MyApp app 개체에 액세스 할 때

당신이해야 할 것입니다, 다음 MyApp app을 통과

은 당신이 <application> 태그의 AndroidManifest.xml의 파일에 MyApp를확인 선언했는지 확인 Android 구성 요소 클래스 (활동, 단편, 서비스 등)의 Android 구성 요소가 아닌 클래스 (도우미, 처리기 또는 기타 Java 클래스)에 argument of Constructor or Method으로 표시됩니다.

+0

좋습니다 ..이 가능성을 평가했습니다. 그것은 확실하게 작동하는 해결책입니다.하지만 저는 각 클래스 나 메소드에 MyApp에 대한 참조를 전달하지 않으려 고하므로 매우 게으르다.). 왜 내 접근 방식이 그렇게 잘못 되었습니까? – user1709805