我正在为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();
),因为活动是阻塞的,但实际的phonegap线程不应该在return true
之后继续运行吗?如果我删除startActivity
电话,那么该应用程序会按预期继续工作。
答案 0 :(得分:6)
我正在调查一个问题(另一个)。但似乎UI主线程不等于Cordova线程。会发生什么是UI主线程确实已发布,但Cordova线程不是。
顺便说一句,我也认为:之间存在差异callbackContext.success();
和
callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, result));
它还没有烘烤,抱歉。如果我能找到更多,我会更新。
此外,您可以先调用callbackContext.success();
,然后再调用其余的..(如果有任何帮助)。