从片段的 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
上下文进行初始化你的本地图书馆。
我正在尝试在我的 Fragment
中使用 this solution,但是我不确定在哪里调用 System.LoadLibrary()
,最后我决定从 onCreate
调用Fragment
的方法,我想确定这是否会在不同的设备上引发另一个奇怪的错误。
这只是一个静态初始化。您甚至根本不必将它放在 onCreate()
中。您可以简单地将其初始化为全局变量旁边 class 的第一部分:
class YourClass
{
static
{
System.loadLibrary( yourLib );
}
...
}
重要的是尽早完成,否则您可能会看到 UnsatisfiedLinkError
随后应用程序崩溃。这样,无论何时进行稍后引用的调用,库本身都已经加载。一旦请求了 class 的实例,顶部的静态声明就会执行此操作;甚至在 onCreate()
.
一般它不会导致奇怪的行为,因为 onCreate
是系统创建片段时的强制回调。这确保在您对片段进行进一步操作之前准备好您的本机库。
看看片段 life cycle,如果将库初始化例程放在第一个回调 onAttach
上可能会更好,您可以使用附加的 Activity
上下文进行初始化你的本地图书馆。