我想在Fragment
内使用this solution,但我无法确定在哪里拨打System.LoadLibrary()
,最后我决定从onCreate
拨打电话Fragment
的方法,我想确定这是否会在不同设备上引发另一个奇怪的错误。
答案 0 :(得分:1)
这只是一个静态初始化。你甚至不必将它放在你的onCreate()
里面。您可以简单地将它初始化为您的全局变量旁边的类的第一部分:
class YourClass
{
static
{
System.loadLibrary( yourLib );
}
...
}
唯一重要的是提前完成,或者您可能会看到UnsatisfiedLinkError
然后应用程序崩溃。这样,无论何时进行稍后引用的调用,库本身都已被加载。一旦请求了类的实例,顶部的静态声明就会这样做;甚至在onCreate()
之前。
答案 1 :(得分:1)
一般情况下,它不会导致奇怪的行为,因为当您的片段由系统创建时,onCreate
是必需的回调。这样可以确保在片段中进一步操作之前准备好本机库。
看一下片段life cycle,如果你把库初始化例程放在第一个回调onAttach
上可能会更好,你可以使用附加的Activity
上下文来初始化你的原生库。