我有一个带有TabActivity的Android应用程序,其中包含4个选项卡 - 列表视图,地图视图,另一个列表和webview。从列表视图中,我可以点击一个项目,然后启动另一个活动,按回返回选项卡活动。
但是,一旦访问了地图视图选项卡,从列表视图导航到第二个活动,然后按后退按钮将导致大约3-4秒的挂起。一旦访问了地图视图,在退出应用程序之前,这个问题永远不会消失。
更多说明:
更多信息。我在地图活动中为它的生命周期事件添加了一些日志消息:
远离地图选项卡:
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下对其进行了描述,大部分时间用于消息调度,布局和绘图......所以我对某种递归布局或绘图问题持怀疑态度...... < / p>
此外,我尝试在地图活动停止时删除地图片段,并在地图活动开始时将其添加回来,这解决了延迟问题,但地图不记得它的状态,丢失了所有标记,而且速度很慢重新出现。
另一个跟进:
我能找到的唯一的解决方案是在活动停止时删除片段并在恢复时将其添加回来 - 并保存摄像机位置。我也尝试通过片段管理器隐藏并重新显示片段,并直接在地图视图上显示 - 没有运气。