Мигает / мерцает с JQM и PhoneGap на Android

Я использую PhoneGap 2.2.0 в сочетании с jQuery Mobile 1.2.0 для своего приложения на платформе Android (версия 2.3.3 и выше). На страницах я использую фиксированные заголовки и вообще никаких переходов. Отдых в значительной степени стандартный jQuery.

Когда я перемещаюсь со страницы на страницу, я на короткое мгновение получаю белый мигание (целая страница). Я обыскал в Интернете часами.

Не удалось выполнить попытку ниже:

  • Десятки CSS-хаков, которые я нашел в Интернете. (Например: https://github.com/jquery/jquery-mobile/issues/4024 и https://groups.google.com/forum/?fromgroups=#!topic/phonegap/EtZ2KwseKQ0 и мерцание при переходе между страницами ) ,
  • Я попытался переключить фиксированные заголовки (опять же, я не использую эффекты перехода).
  • Я попробовал jQuery Mobile 1.3.1. (Там не повезло)
  • Одна вещь, которую я не пробовал, – это PhoneGap 2.3.0, но я не вижу в этом списке ничего интересного. Изменить: проблема сохраняется в PhoneGap 2.5.0.

Когда я выключаю аппаратное ускорение в проекте Android, мигание пропало. Но тогда некоторые стили CSS идут не так, и общая производительность очень плохая (очевидно).

Я также попробовал код ниже.

ui.page { -webkit-transform: translateZ(0); -webkit-perspective:1000; -webkit-backface-visibility: hidden; } 

Плохо все равно не повезло.

Также попробовал это: https://github.com/watusi/jquery.mobile.simultaneous-transitions Еще одна короткая (полная белая страница) мигает перед транзистором.

Кажется, что он не имеет ничего общего с переходами анимации самой страницы, но что-то странное, что происходит сразу же после разгрузки старой страницы и перед загрузкой новой.

Обновление 25-04-2013: Также попытались: https://groups.google.com/forum/?fromgroups=#!topic/phonegap/EtZ2KwseKQ0 https://github.com/jquery/jquery-mobile/issues/4024 https : //github.com/jquery/jquery-mobile/pull/4129

Единственное, что заставляет мигать, – удалить часть неподвижного головного узла. Тогда это так же гладко, как масло, но я пропускаю заголовки, которые совместимы с панелями.

Также попробовал шаблон 1 страницы (все страницы в одном файле). Не помогло.

JQuery Mobile 1.3.1 PhoneGap 2.5.0 Устройства Android 4+: – Google Galaxy Nexus – Samsung Galaxy Tab 10.1 (была проблема, но устройства больше нет) – Samsung Galaxy Note 10.1

Я сейчас представил вопрос о Github: https://github.com/jquery/jquery-mobile/issues/6031

Установка видового экрана в user-scalable = не исправлена ​​проблема для меня:

+ Изменить

 < meta name="viewport" content="width=device-width, initial-scale=1" /> 

в

 < meta name="viewport" content="width=device-width, user-scalable=no" /> 

Установка видового экрана в user-scalable = не исправлена ​​проблема для меня:

 < meta name="viewport" content="width=device-width, user-scalable=no" /> 

Работает для jQuery Mobile 1.3.1 Cordova 2.8.0 на Nexus 4 / Android 4.2.2

Третья ссылка в вашем сообщении – это то, как я исправил ее некоторое время назад, когда у меня возникла эта проблема. Я также добавил -webkit-perspective: 1000; Мерцание происходит из-за трехмерного ускорения, и обратная сторона страницы, которая преобразуется, становится видимой на долю секунды, делая ее похожей на мерцание.

Edit: Посмотрите на это также для получения дополнительной информации.

Я пробовал десятки решений, но ни один из них не работал, сформируйте мне лучший способ для меня решить этот миг, заключается в том, чтобы установить свойство autohidesplashscreen на false, показать заставку на предыдущей странице и скрыть ее на целевой странице в deviceready. В некоторых переходах мы спали переходы около 0,5 – 1 сек, чтобы избежать моргания spalshscreen. Не лучшее решение, но работало для нас.

Убедитесь, что этот код существует в вашем методе mobileinit :

 //initialize jQM $(document).on("mobileinit", function () { //hack to fix android page transition flicking issue if (navigator.userAgent.indexOf("Android") != -1){ $.extend( $.mobile , { defaultPageTransition: 'none' }); } }); 

Также: измените следующее в jquerymobile.js

 // Make our transition handler the public default. $.mobile.defaultTransitionHandler = simultaneousHandler; //transition handler dictionary for 3rd party transitions $.mobile.transitionHandlers = { "default": $.mobile.defaultTransitionHandler, "sequential": sequentialHandler, "simultaneous": simultaneousHandler }; 

Также любезно сообщите мне, какую версию устройства для Android вы используете?