私は VOIP アプリケーションの開発に取り組んでいます。以下は私のアーキテクチャです。
UI: JS 関数で Cordova を使用します。
Sencha Touch : HTML5 フレームワーク。
バックエンド: C コード (エンジン) を使用します。
JNI: JNI を使用して C 関数を呼び出し、その逆を行います。
プラットフォーム: アンドロイド。
これで、Cordova を拡張する単一のアクティビティができました。
Cordova:
1) webview をロードするアクティビティがあります。
2) JS 関数で loadUrl を呼び出すだけです。3
)
JS 関数は、JSONArrayをデータとして、または単に UI 表示 JS 関数として受け取ります。
**現在、AsyncTask で loadUrl を呼び出し、broadcastreceiver で Handler を作成し、アクティビティのrunOnUiThreadで呼び出しています。UI の遷移と ANR に多少の遅延が見られます。**
非 UI スレッドからデータを受信しました。loadUrl 関数を呼び出すにはどうすればよいですか?
1)Docは(指定されたURLをロードする)と言っていますが、これはUIメインスレッドでのみ呼び出す必要があることを意味しますか?
2) プレーンな Java クラスでハンドラーを作成し、handleMessage 関数で loadUrl を呼び出すことはできますか?
3)メイン アクティビティでハンドラを作成し、handleMessage で loadUrl を呼び出しますか?
4) runOnUiThread が最善の方法ですか?
5)UIメインスレッドでloadUrlを呼び出す必要がある場合、どうすれば同じことを達成できますか?
6) loadUrl を呼び出す最良の方法は何ですか?