如果多个活动和服务需要,在哪里加载 Android 中的本机库

我的一些 Kotlin 类是由本机库(Rust using jni)实现的。这些类用于大多数活动和一个同步服务(第二个服务可能稍后出现)。

加载此库和处理加载错误的推荐解决方案是什么(例如,如果加载失败则发送错误报告)?

基本示例在MainActivity.onCreate. 或者我经常在 MainActivity 类中看到一个静态块。另一种方法可能是从Application. 但是我不确定是否Application所有活动和服务都只有一个实例,或者是否为每个服务创建了一个“应用程序”实例,而为所有活动创建了另一个实例。

所以我的问题是:放在System.loadLibrary()哪里?


牛魔王的故事
浏览 115回答 1
1回答

慕勒3428872

是的,应用程序是整个 Android 应用程序的单例。但是你不必担心,如果之前加载过库,LoadLibrary() 什么也不做。因此,最佳实践是在所有依赖此库的类的静态块中添加 LoadLibrary。考虑使用ReLinker库,该库提供日志记录以及解决加载本机库的一些普遍问题的解决方法。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java