我写了一个关于tabhost的程序,tabhost下有三个标签,每个标签中的内容都是一个子Activity,第一个标签中包含了一个按钮,可以跳转到其它Activity上去,第二个标签包含的是一个简单的Activity,第三个标签是一个包含SurfaceView的Activity。
程序启动后是默认显示第一个标签的。第一个标签中有一个按钮“跳转”,是跳转到一个Activity(HelloActivity)的。
现在的现象是,程序启动到这个tabhost后,直接按跳转按钮,可以进入到HelloActivity,然后在HelloActivity按返回键,又退回到这个Tab界面(整个过程很流畅)。HelloActivity生命周期是完整的,Log打印如下。
然后再点击Tab2,再点回Tab1后按“跳转”,再从HelloActivity返回,整个过程也是流畅的。
但是,点Tab3(Tab3中是一个含有SurfaceView的Activity)再返回Tab1,点“跳转”后,能够顺利跳转HelloActivity,但按返回键后,却不能很顺利地退出,要卡很久才能退出。通过打印日志显示,它只执行到了onPause,并没有执行onStop和onDestroy。
我再一次点击“跳转”,发现其先执行onCreate、onStart、onResume,然后才是onStop onDestroy(我还没按退出键呢,就执行了这两个函数,好像是要补上上次没有执行过的意思)。
表达的可能有些啰嗦,总之就是点了含有SurfaceView的标签(这个标签其实就是个Activity),对另外一个标签跳转到其它界面造成的影响,但是我不知道为什么会出现这种影响。
这个问题困扰我已多时,我想实现的效果是,从HelloActivity返回时绝对不能卡,另外也不要影响SurfaceView的正常工作。
请各位告诉我为什么会出现这种情况,还有怎么解决这个问题。谢谢大家!
这里是程序代码的下载地址:http://www.kuaipan.cn/file/id_54645195324522527.htm