私はAndroidのcordova/phonegapアプリケーションのカスタムプラグインを作成しています。ネイティブのJavaサイドファイアは、起動するサービスによって呼び出されるコールバックを含むアクティビティを生成します。アイデアは、コールバックが1秒おきにサービスからヒットしてうまくいくことですが、問題は別のスレッドで実行されているように見えないため、メインコードバススレッドがブロックされ、アプリケーションが完全に応答しないということです。私は活動が遮断するが、実際のPhoneGapのスレッドキープいけないされているため、JSコールバックが(すなわちcallbackContext.success();
)と呼ばれることはありません飽きないだろう、ここで実現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;
}
:私はこれをやっているドキュメントに基づいて
return true
の後に実行していますか? startActivity
コールを削除すると、アプリは期待どおりに機能し続けます。
Cordova 3.1.0から3.3.0へのアップグレードは、主なスレッドの問題を解決しました。関連するバグ(スレッド/イベント)がそこに発見され(3.4.0)、次のリリースで修正されると私は3.4.0をスキップし、3.5.0を待っています。 – Oren