Cordova插件阻塞线程

Mat*_*cey 7 multithreading android cordova

我正在为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;
}
Run Code Online (Sandbox Code Playgroud)

我在这里意识到JS回调永远不会被调用(即callbackContext.success();),因为活动是阻塞的,但是实际的phonegap线程不应该继续运行return true吗?如果我删除了startActivity呼叫,那么应用程序将按预期继续工作.

Ore*_*ren 6

我正在调查一个问题(另一个).但似乎UI主线程不等于Cordova线程.会发生什么是UI主线程确实已发布,但Cordova线程不是.

顺便说一句,我也认为有以下区别:

callbackContext.success(); 
Run Code Online (Sandbox Code Playgroud)

callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, result));
Run Code Online (Sandbox Code Playgroud)

对不起,它还没有出炉.如果我能找到更多,我会更新.

此外,你可以callbackContext.success();先打电话,然后再打电话......(如果它有帮助).