我必须在我的项目中使用jni库。我应该在Service中还是在单独的线程中加载该库,还是将Service作为单独的进程加载。当我试图在一个线程中启动它,然后清理资源,再次重新加载和使用它时,它崩溃了。可能是内存泄漏。什么是装载和卸载库的最佳方法?我在某处看到那些库无法卸载。它仅由GC完成。
答案 0 :(得分:0)
在Android中,不应卸载JNI共享库。实际上,Java类也无法卸载。这不是内存泄漏,与垃圾收集器几乎没有关系。
除非您有一些非常特殊的设置,否则建议将private void showNameButton_Click(object sender, EventArgs e)
{
string searchKey ="David";
string output = "";
string[] names = { "Abby", "Bill", "Connie", "David", "Eddy"};
foreach(var name in names)
{
if(name == searchKey){
output = name;
break;
}
}
array1Label.Text = output;
}
放在使用此本机库的类(或类)的静态构造函数中。无论您的服务是在进程中运行还是在单独的进程中运行,框架都将为您处理此问题。
如果你在图书馆的System.load()
做一些敏感工作,你可能会特别注意不要两次做这项工作。