gpt4 book ai didi

android - Cordova 插件阻塞线程

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:57:32 26 4
gpt4 key购买 nike

我正在为 Android cordova/phonegap 应用程序创建一个自定义插件, native Java 端启动了一个 Activity ,其中包括由它启动的服务调用的回调。这个想法是,服务每隔一秒左右就会触发一次回调,而且效果很好,但问题是我似乎无法在另一个线程中运行它,所以主 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(); ),因为 Activity 正在阻塞,但实际的 phonegap 线程不应该在 return true 之后继续运行吗? ?如果我删除 startActivity调用然后应用程序继续按预期工作。

最佳答案

我正在调查一个问题(另一个)。但似乎 UI 主线程不等于 Cordova 线程。发生的情况是 UI 主线程确实被释放了,但 Cordova 线程没有。

顺便说一句,我也认为两者之间存在差异:

callbackContext.success(); 

callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, result));

还没烤好,抱歉。如果我能找到更多,我会更新。

此外,您可以先调用 callbackContext.success();,然后再调用其余的......(如果它有任何帮助的话)。

关于android - Cordova 插件阻塞线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19988170/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com