gpt4 book ai didi

来自非 Activity 类的 android getResources()

转载 作者:太空宇宙 更新时间:2023-11-03 12:40:42 25 4
gpt4 key购买 nike

我正在尝试从 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();
}

但它不起作用(

最佳答案

我发现在 Android 中,对于 Activity (和大多数其他类)来说,不要在静态变量中引用它们是非常重要的。我尽量避免使用它们,它们喜欢导致内存泄漏。但是有一个异常(exception),对应用程序对象的引用,它当然是一个 Context。持有对此的静态引用永远不会泄漏内存。

因此,如果我真的需要资源的全局上下文,我会做的是扩展 Application 对象并为上下文添加一个静态获取函数。

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;
}
}

关于来自非 Activity 类的 android getResources(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8463491/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com