我正在尝试从assets / model.txt加载顶点数组 我有OpenGLActivity,GLRenderer和Mymodel类 我将此行添加到OpenGLActivity:
public static Context context;
这是Mymodel课程:
Context context = OpenGLActivity.context;
AssetManager am = context.getResources().getAssets();
InputStream is = null;
try {
is = am.open("model.txt");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Scanner s = new Scanner(is);
long numfloats = s.nextLong();
float[] vertices = new float[(int) numfloats];
for (int ctr = 0; ctr < vertices.length; ctr++) {
vertices[ctr] = s.nextFloat();
}
但它确实无效(
答案 0 :(得分:6)
我在Android中发现,活动(和大多数其他类)在静态变量中没有引用它们是非常重要的。我试图不惜一切代价避免它们,他们喜欢导致内存泄漏。但是有一个例外,即对应用程序对象的引用,当然是Context
。在静态中保持引用永远不会泄漏内存。
因此,如果我真的需要拥有资源的全局上下文,那么我要做的是扩展Application对象并为上下文添加静态get函数。
In the manifest do....
<application android:name="MyApplicationClass" ...your other bits....>
在Java中......
public class MyApplicationClass extends Application
{
private Context appContext;
@Override
public void onCreate()
{//Always called before anything else in the app
//so in the rest of your code safe to call MyApplicationClass.getContext();
super.onCreate();
appContext = this;
}
public static Context getContext()
{
return appContext;
}
}