异步加载本机库的最佳实践

问题描述 投票:0回答:1

我知道每个人都只是在加载类时加载本机库,就像

static {System.loadLibrary("libXXX")}
一样。最近我发现 StrictMode 在
System.loadLibrary
显示 DiskReadViolation,我应该将其移至非 UI 线程吗?实施起来似乎并不容易。有没有官方文档解释该怎么做?

android java-native-interface
1个回答
0
投票

StrictMode 背后的目的是帮助您在使用应用程序时捕获潜在的阻塞操作,但是在这种情况下,System.loadLibrary

 调用发生在屏幕更改之前很久,因为它是在类初始值设定项中。

来自

有关 StrictMode 的文档

如果您发现您认为有问题的违规行为,有多种工具可以帮助解决它们:线程、Handler、AsyncTask、IntentService 等。但是

不必觉得必须修复 StrictMode 发现的所有内容。特别是,在正常活动生命周期期间,许多情况下通常需要进行磁盘访问。使用 StrictMode 来查找您无意中所做的事情。不过,UI 线程上的网络请求几乎总是一个问题。

© www.soinside.com 2019 - 2024. All rights reserved.