我编写了一个 Cordova 插件,用于在 Android 上调整图像大小,但是当浏览大量图像(超过 100 张)时,界面会锁定,直到浏览结束。我正在使用线程池执行所有的缩放操作,最初只是使用 Runnable,但是在阅读了这篇博客文章 Cordova Plugins and Thread Blocking 后,我切换到一个外部类来进行操作。然而,我仍然遇到以下问题:
W/PluginManager﹕ THREAD WARNING: exec() call to ImageStore.getImage blocked the main thread for 91ms. Plugin should use CordovaInterface.getThreadPool().
每次调整大小图像时,调用看起来像这样:
private boolean getImage(final JSONArray args, final CallbackContext callbackContext) throws JSONException {
JSONObject argObject = args.getJSONObject(0);
int photoId = argObject.getInt("photoId");
final PhotoData photoData = mPhotos.get(photoId);
cordova.getThreadPool().execute(new GetImageRunnable(photoData, callbackContext));
return true;
}
GetImageRunnable没有与主插件有任何链接,除了传入的photoData对象。有没有办法查看是什么导致了减速或阻塞了主线程?