2010-11-30 6 views
0

アクティビティで使用されているサブクラスにリソースを渡そうとしていました。私は2つの方法で解決しましたが、一方または両方がメモリリークの可能性があるかどうかはわかりません。だからここに私がこれまで持っているものです。リソースを処理する最善の方法

-myactivity(アクティビティクラス)

-global(パッケージのグローバルクラス、私はグローバルづけした変数を保存するために使用しています)

-subclass (私は描画可能リソースを使いたいサブクラス)

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のオプションでお勧めします。少なくとも必要なのは、リソースにアクセスできるようにアプリケーションコンテキストへの参照を渡すことだけです。

+0

お返事ありがとうございました!私はあなたの言うことを試してみて、それと一緒に行くか、そのまま続けると思います。 – Mauricio