2010-11-30 5 views
0

내 액티비티에 사용 된 서브 클래스에 리소스를 전달하려고 애쓰는 중이었습니다. 나는 두 가지 방법으로 문제를 해결했지만 하나 또는 둘 다 메모리 누수를 일으킬 지 확신 할 수 없습니다. 그래서 여기 내가 지금까지 무엇을 가지고 :리소스를 처리하는 가장 좋은 방법은

-myactivity (활동 클래스)

-global

-subclass를 (패키지 글로벌 클래스, 나는 글로벌 accesible 변수를 저장하기 위해 사용하고 있습니다) (내가 원하는 서브 클래스는 드로어 블 리소스를 사용하는)

A)

public class global{ 
    public static Resources appRes; 
    .... 
} 

public class myactivity extends Activity { 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     global.resApp = this.getResources(); 
     ... 
    } 

    private void somewhere(){ 
     subclass tmp = new subclass(); 
     tmp.subclasmethod(); 
    } 
} 

public class subclass{ 
    public subclass(){...} 

    public void subclassmethod(){ 
     Bitmap bmp = BitmapFactory.decodeResource(Global.appRes, R.drawable.myres); 
     ... 
    } 
} 

b) 귀하의 의견에 미리

public class myactivity extends Activity { 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     ... 
    } 

    private void somewhere(){ 
     subclass tmp = new subclass(this.getContext()); 
     tmp.subclasmethod(); 
    } 
} 

public class subclass{ 
    Context context; 

    public subclass(Context context){ 
     this.context = context 
     ... 
    } 

    public void subclassmethod(){ 
     Bitmap bmp = BitmapFactory.decodeResource(context.getResources(), R.drawable.myres); 
     ... 
    } 
} 

감사합니다.

답변

1

전역 클래스에서 응용 프로그램 범위의 값을 저장하려면 적어도 옵션을 사용하지 않아야합니다. 글로벌 응용 프로그램 상태를 유지 에 필요로하는 사람들을위한

기본 클래스 : 대신, Application 정확히이 당신을 도울하기위한 것입니다 클래스를보십시오.

그렇지 않으면, 당신은 b를 선택 에 제안 대안은 그것을 할 수있는 OK 방법입니다. 적어도 필요한 것은 리소스에 액세스 할 수 있도록 응용 프로그램 컨텍스트에 대한 참조를 전달하는 것입니다.

+0

답장을 보내 주셔서 감사합니다. 나는 당신이 말한 것을 시도한 다음 그와 같이 결정하거나 그냥 계속 진행할 것입니다. – Mauricio

관련 문제