Botão Voltar muito lento
Eu tenho um aplicativo Android com um TabActivity segurando 4 abas - uma exibição de lista, uma exibição de mapa, outra lista e uma visão da web. Na visualização de lista, posso tocar em um item e iniciar outra atividade, pressionando voltar retorna à atividade da guia.
No entanto, uma vez que a guia de exibição de mapa foi visitada, navegar para a segunda atividade a partir da exibição de lista e, em seguida, pressionar o botão Voltar resulta em um travamento de cerca de 3-4 segundos. Depois que a visualização do mapa for visitada, esse problema nunca desaparecerá até que o aplicativo seja encerrado.
Mais algumas notas:
A visualização do mapa também pode ativar outra atividade - e, nesse caso, o botão Voltar funciona bem - somente se a guia de visualização do mapa estiver inativa quando a segunda atividade for ativada, o problema ocorrerá.Teste em dois dispositivos - problema ocorre no Galaxy S, não ocorre no Nexys 7.Não há nada óbvio no logcat que eu possa ver.O app está usando a API do Google Maps V2 e suporta lib para suporte a fragmentos.App é escrito em Mono.Mais informações. Eu coloquei algumas mensagens de log na atividade do mapa para seus eventos de ciclo de vida:
Como sair da guia do mapa:
02-12 18:53:43.841 I/MAPTEST ( 5031): OnSaveInstanceState
02-12 18:53:43.857 I/MAPTEST ( 5031): OnPause
Iniciando a segunda atividade na guia de exibição de lista:
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
Pressionando o botão de retorno da segunda atividade (ou seja: quando a pausa ocorre):
-- Absolutely nothing in log cat --
Voltando para a guia do mapa:
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
O que pode fazer com que o retorno a uma atividade seja bloqueado por 3 a 4 segundos?
Como alternativa, o que mais posso fazer para diagnosticar isso?
Mais informações:
De acordo com o comentário do michal-z, perfilado no DDMS e na maioria das vezes foi gasto em envio de mensagens, layout e desenho ... por isso estou desconfiado de algum tipo de layout recursivo ou problema de desenho ...
Além disso, tentei remover o fragmento do mapa quando a atividade do mapa foi interrompida e adicioná-lo novamente quando a atividade do mapa foi iniciada e isso resolveu o problema de atraso, mas o mapa não lembra seu estado, perde todos os marcadores e demora a reaparecer.
Outro acompanhamento:
osó solução que eu poderia encontrar para isso é remover o fragmento quando a atividade é interrompida e adicioná-lo de volta quando retomado - e também salvar a posição da câmera. Eu também tentei esconder e mostrar novamente o fragmento através do gerenciador de fragmentos e diretamente na visualização do mapa - sem sorte.