我正在为一个Android Cordova/Phonegap应用程序创建一个自定义插件,本地Java端会启动一个活动,并包括由它启动的服务调用的回调。这个回调每秒钟左右被服务触发并且运行良好,但问题是我无法将其运行在另一个线程中,导致主要的Cordova线程被阻塞,应用完全无响应。
根据文档,我正在执行以下操作:
根据文档,我正在执行以下操作:
@Override
public boolean execute(String action, JSONArray args, final CallbackContext context) throws JSONException
{
/* snip */
cordova.getThreadPool().execute(new Runnable()
{
public void run()
{
Intent myIntent = new Intent(this.cordova.getActivity(), myMonitoring.class);
this.cordova.getActivity().startActivity(myIntent);
callbackContext.success();
}
});
return true;
}
我意识到在这里JS回调将永远不会被调用(即callbackContext.success();
),因为该活动正在阻塞,但是如果我删除startActivity
调用,则应用程序会像预期的那样继续工作。不过,实际上phonegap线程应该在return true
之后继续运行,不是吗?