7
我正在爲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
電話,則應用程序按預期繼續工作。
從Cordova 3.1.0升級到3.3.0解決了主線程問題。我跳過3.4.0,並且等待3.5.0,因爲我相信在那裏發現了一個相關的錯誤(也是線程/事件)(3.4.0),併爲下一個版本修復。 – Oren