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);
        ...
    }
}

フィードバックをお寄せいただきありがとうございます。

4

1 に答える 1

1

グローバル クラスにアプリケーション全体の値を格納する場合は、少なくともオプションaを使用しないでください。代わりに、Applicationクラスを見てください。これは、まさにこれを支援することを目的としています。

グローバルなアプリケーションの状態を維持する必要がある人のための基本クラス。

それ以外の場合は、オプションbで提案する代替手段が問題ありません。少なくとも、リソースにアクセスできるように、アプリケーション コンテキストへの参照を渡すだけでよい場合。

于 2010-11-30T12:29:50.350 に答える