【问题标题】:best way to handle resources处理资源的最佳方式
【发布时间】:2010-11-30 11:54:35
【问题描述】:

我在尝试将资源传递给我的 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);
        ...
    }
}

提前感谢您的反馈。

【问题讨论】:

    标签: android android-resources


    【解决方案1】:

    如果您想要一个全局类来存储应用程序范围的值,您至少不应该使用您的选项 a。相反,请查看 Application 类,它旨在帮助您解决这个问题:

    为那些需要的人提供基类 维护全局应用程序状态。

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

    【讨论】:

    • 感谢您的回复!,我想我会尝试您所说的,然后决定继续使用还是继续使用 b。
    猜你喜欢
    • 2013-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-25
    • 2018-09-20
    相关资源
    最近更新 更多