【发布时间】:2020-01-16 13:28:57
【问题描述】:
如果我有不同的资源名称,例如大象、老虎和猫。我想创建一个接受资源名称并返回可绘制对象的方法。然后我写了这个
public Drawable getDrawable(String name){
int defaultResId= ResourceOptimizer.getResId(name,R.drawable.class);
return getResources().getDrawable(defaultResId);
}
ResourceOptimizer 是
public class ResourceOptimizer {
public static int getResId(String resName, Class<?> c) {
try {
Field idField = c.getDeclaredField(resName);
return idField.getInt(idField);
} catch (Exception e) {
e.printStackTrace();
return -1;
}
}
}
但问题是需要调用getResources()
在活动或片段中,否则您要传递上下文。
传递上下文可能会导致内存泄漏。特别是,当
它必须通过几个类。我想知道是否
有一些方法可以通过更方便的方式获取资源。
喜欢
R.id.DRAWABLE_NAME
【问题讨论】:
-
从哪里调用
getDrawable方法?如果发布更多代码会更有帮助。 -
@KishoreJethava 在片段或活动之外。所以我需要多次传递上下文,因为我喜欢提取方法。
标签: android memory-leaks getresource