偶然发现的android2.2的一个bug
有时候会有这样的需求,在assets里放入一些文件,程序运行时能够动态读取。代码如下:
AssetManager am = context.getAssets();
String[] imgs = am.list("img");
for (int i = 0; i < imgs .length; i++)
{
String imgName = imgs[i];
InputStream is = am.open(String.format("img/%s", imgName));
// do something with is.
}
String[] imgs = am.list("img");
for (int i = 0; i < imgs .length; i++)
{
String imgName = imgs[i];
InputStream is = am.open(String.format("img/%s", imgName));
// do something with is.
}
如果在android2.2下,添加到img目录下的文件超过512个,调用am.list("img")就会出错,提示引用超过512个了,这是个jni层的错误,应该是本地代码未及时释放本地引用,这个bug导致程序直接崩溃退出。不过android2.3版本就没有这个问题了。