Кнопка возврата очень медленная
У меня есть приложение для Android с TabActivity, содержащее 4 вкладки - представление списка, представление карты, другой список и веб-просмотр. В представлении списка я могу нажать на элемент, и он начинает другое действие, нажав назад, чтобы вернуться к действию вкладки.
Однако после посещения вкладки представления карты переход ко второму действию из представления списка и затем нажатие кнопки «назад» приводит к зависанию примерно на 3-4 секунды. Когда посещение карты посещено, эта проблема никогда не исчезнет, пока приложение не будет закрыто.
Еще несколько заметок:
Проблема с картой также может запускать другое действие - и в этом случае кнопка «Назад» работает нормально - только если вкладка представления карты неактивна при запуске второго действия, возникает проблема.Тестирование на двух устройствах - проблема возникает на Galaxy S, не возникает на Nexys 7.В logcat нет ничего очевидного.Приложение использует Maps API V2 и поддерживает lib для поддержки фрагментов.Приложение написано в моно.Больше информации. Я вставил несколько сообщений журнала в активность карты для событий ее жизненного цикла:
Переход от вкладки карты:
02-12 18:53:43.841 I/MAPTEST ( 5031): OnSaveInstanceState
02-12 18:53:43.857 I/MAPTEST ( 5031): OnPause
Запуск второго действия на вкладке представления списка:
02-12 18:54:06.900 I/MAPTEST ( 5031): OnSaveInstanceState
virtual void WebCore::Widget::show()
virtual void WebCore::Widget::show()
void WebCore::ScriptController::updatePlatformScriptObjects()
virtual void WebCore::Widget::show()
static bool WebCore::ResourceHandle::supportsBufferedData()
static bool WebCore::ResourceHandle::supportsBufferedData()
02-12 18:54:07.353 I/MAPTEST ( 5031): OnStop
Нажатие кнопки «Назад» во втором упражнении (то есть, когда происходит пауза):
-- Absolutely nothing in log cat --
Переключение обратно на вкладку карты:
02-12 18:54:59.056 I/MAPTEST ( 5031): OnRestart
02-12 18:54:59.060 I/MAPTEST ( 5031): OnStart
02-12 18:54:59.064 I/MAPTEST ( 5031): OnResume
Что может привести к блокировке возврата к занятию на 3-4 секунды?
Кроме того, что еще я могу сделать, чтобы диагностировать это?
Больше информации:
Согласно комментарию michal-z, он был профилирован под DDMS, и большую часть времени он проводил в рассылке сообщений, макете и рисовании ... поэтому я с подозрением отношусь к какой-то рекурсивной компоновке или проблеме с рисованием ...
Кроме того, я попытался удалить фрагмент карты, когда действие карты было остановлено, и добавить его обратно, когда действие карты было запущено, и это решило проблему задержки, но карта не запоминает свое состояние, теряет все свои маркеры и медленно появляется снова.
Еще одно продолжение:
только Решение, которое я мог бы найти для этого, состоит в том, чтобы удалить фрагмент, когда действие остановлено, и добавить его обратно при возобновлении, а также сохранить положение камеры. Я также попытался скрыть и снова показать фрагмент как с помощью диспетчера фрагментов, так и непосредственно в виде карты - не повезло.