У меня есть приложение PhoneGap/Sencha Touch, которое имеет три основных состояния при загрузке приложения: заставка, веб-просмотр загружен, но Sencha Touch загружается, а Sencha Touch полностью загружен.
На некоторых телефонах Android (например, на моем Kyocera Rise) все идет гладко. Вижу заставку, потом на deviceready
успешно вызывается navigator.splashscreen.hide()
. Жестко закодированный индикатор загрузки html / css, который у меня есть на index.html
, отображается во время загрузки Sencha Touch, а затем, когда загружается код Sencha Touch, он показывает полностью загруженное приложение.
Однако на других телефонах (например, на моем Galaxy S3) все работает не так хорошо. Я вижу заставку, затем deviceready
заставка скрыта. Однако запрограммированный индикатор загрузки на index.html
не появляется. Все, что я вижу, это белый (или иногда черный) экран. Однако, когда код Sencha Touch полностью загружен, приложение успешно появляется.
Вот что я пробовал: - Удаление различных фрагментов кода. Полное удаление кода Sencha Touch позволяет избавиться от флэш-памяти и позволяет появиться жестко заданному индикатору загрузки на index.html
.
- Включение задержки в несколько секунд при срабатывании кода Sencha Touch. Не работает
- Запуск оповещения javascript на
deviceready
избавляет от вспышки и позволяет появиться индикатору загрузки. - Замена индикатора загрузки только текстом:
<body>loading</body>
. Не работает. - Принуждение
index.html
к повторному рендерингу путем изменения цвета фона, а также переключения междуdisplay:none
иdisplay:block
. Не работает. - Удаление слушателя
deviceready
и запускnavigator.splashscreen.hide()
сразу после разметки<body>
наindex.html
. Не работает.
Основываясь на этой информации, похоже, что это как-то связано с Sencha Touch, поскольку полное удаление кода Sencha Touch позволяет показывать индикатор загрузки. Возможно, это как-то связано с рендерингом, учитывая, что индикатор предупреждения также позволяет отображать индикатор загрузки. Однако это все, что у меня есть. Похоже, что другие люди сталкивались с подобными вещами, в основном на iOS и Blackberry. Я не нашел ни одного предложенного решения, которое я видел в другом месте, которое, кажется, решает мою проблему; во многом это просто тот факт, что раньше люди не могли скрыть заставку на устройстве.
Есть ли что-то, что мне здесь не хватает? Почему такое может происходить? Почему это происходит только на некоторых телефонах Android?
navigator.splashscreen.hide()
вApplication.launch
метод. Кроме того, попробуйте свой код в эмуляторе Ripple, это может помочь понять причину проблемы: chrome.google.com/webstore/detail/ripple-emulator-beta/ - person Baidaly   schedule 10.02.2015