我知道每个人都只是在加载类时加载本机库,就像
static {System.loadLibrary("libXXX")}
一样。最近我发现 StrictMode 在 System.loadLibrary
显示 DiskReadViolation,我应该将其移至非 UI 线程吗?实施起来似乎并不容易。有没有官方文档解释该怎么做?
StrictMode 背后的目的是帮助您在使用应用程序时捕获潜在的阻塞操作,但是在这种情况下,System.loadLibrary
调用发生在屏幕更改之前很久,因为它是在类初始值设定项中。来自
有关 StrictMode 的文档:
如果您发现您认为有问题的违规行为,有多种工具可以帮助解决它们:线程、Handler、AsyncTask、IntentService 等。但是不必觉得必须修复 StrictMode 发现的所有内容。特别是,在正常活动生命周期期间,许多情况下通常需要进行磁盘访问。使用 StrictMode 来查找您无意中所做的事情。不过,UI 线程上的网络请求几乎总是一个问题。