Ну, я занимаюсь разработкой приложений VOIP. Ниже представлена моя архитектура.
UI: использует Cordova с функциями JS.
Sencha Touch: HTML5 Framework.
Backend: использует код C (движок).
JNI: используйте JNI для вызова функции C и наоборот.
Платформа: Android.
Теперь у нас есть одно действие, расширяющее Кордову.
Кордова:
1) Имеет активность, которая загружает веб-просмотр.
2) Все, что мы вызываем, - это loadUrl с функциями JS
3) Функции JS будут принимать JSONArray в виде данных или просто JS-функцию отображения пользовательского интерфейса.
** Прямо сейчас мы вызываем loadUrl в AsyncTask и создавая Handler в широковещательном приемнике и на runOnUiThread активности. Мы видим некоторое отставание в переходах пользовательского интерфейса и ANR. **
Данные получены из потока, отличного от пользовательского интерфейса. Как мне вызвать функцию loadUrl?
1) Док говорит (загружает указанный URL-адрес), что означает, что он должен вызываться только в основном потоке пользовательского интерфейса?
2) Могу ли я создать обработчик в простом классе Java и вызвать loadUrl в функции handleMessage?
3) Создать обработчик в основном действии и вызвать loadUrl в handleMessage?
4) runOnUiThread - лучший способ?
5) Если loadUrl следует вызывать в основном потоке пользовательского интерфейса, как добиться того же?
6) Как лучше всего вызвать loadUrl?