我试图将资源传递给我的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);
...
}
}
提前感谢您的反馈。
答案 0 :(得分:1)
如果您希望全局类存储应用程序范围的值,则至少不应使用 a 选项。相反,请查看Application
类,它可以帮助您完成此操作:
需要的人的基础课程 维护全球申请状态。
否则,您在选项 b 中建议的替代方法是一种可行的方法。至少,如果您只需要传递对应用程序上下文的引用,那么您就可以访问资源。