处理资源的最佳方式

时间:2010-11-30 11:54:36

标签: android android-resources

我试图将资源传递给我的Activity上使用的子类。我以两种方式解决了这个问题,但不确定其中一个或两个是否会导致内存泄漏。所以这就是我到目前为止所做的:

-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 个答案:

答案 0 :(得分:1)

如果您希望全局类存储应用程序范围的值,则至少不应使用 a 选项。相反,请查看Application类,它可以帮助您完成此操作:

  

需要的人的基础课程   维护全球申请状态。

否则,您在选项 b 中建议的替代方法是一种可行的方法。至少,如果您只需要传递对应用程序上下文的引用,那么您就可以访问资源。