从片段的 onCreate 方法调用 System.LoadLibrary() 会是错误的吗?

Would it be wrong to call System.LoadLibrary() from onCreate method of a fragment?

我正在尝试在我的 Fragment 中使用 this solution,但是我不确定在哪里调用 System.LoadLibrary(),最后我决定从 onCreate 调用Fragment 的方法,我想确定这是否会在不同的设备上引发另一个奇怪的错误。

这只是一个静态初始化。您甚至根本不必将它放在 onCreate() 中。您可以简单地将其初始化为全局变量旁边 class 的第一部分:

class YourClass
{
   static
   {
       System.loadLibrary( yourLib );
   }

   ...
}

重要的是尽早完成,否则您可能会看到 UnsatisfiedLinkError 随后应用程序崩溃。这样,无论何时进行稍后引用的调用,库本身都已经加载。一旦请求了 class 的实例,顶部的静态声明就会执行此操作;甚至在 onCreate().

之前

一般它不会导致奇怪的行为,因为 onCreate 是系统创建片段时的强制回调。这确保在您对片段进行进一步操作之前准备好您的本机库。

看看片段 life cycle,如果将库初始化例程放在第一个回调 onAttach 上可能会更好,您可以使用附加的 Activity 上下文进行初始化你的本地图书馆。