现在的位置: 首页 > 综合 > 正文

TabActivity里Actvity的生命周期

2013年05月19日 ⁄ 综合 ⁄ 共 778字 ⁄ 字号 评论关闭

遇到TabActivity里注册和销毁广播接收器应该写到Activity的哪些声明周期阶段里,所以上网查了查,

发现,

开始是同样的oncreate--onstart--onresume,

当你切换到其他activity时你会发现他调用了onpause而不会调用onstop(即使你这时调用锁屏键他也不会onstop),

当你退出这个tabactivity时他调用了onstop和ondestory。

这个我们可以知道acitivity的生命周期交给了activitygroup来管理。

 

另外今天做项目遇到一个很实用的小tips:

在TabActivity里做tab切换的时候,如果当前的progressDialog并没有关闭会导致程序的崩溃,

错误提示是:XXXActivity has leaked window ... that was originally adde here,

大致的意思是存在窗口句柄泄露,即未能及时销毁某个PhoneWindow.

其实解决方法很简单,重写onDestory(或者是onPause)方法,将progressDialog给dismiss掉即可。通常我的写法是:

 //当在UI线程中显示ProgressDialog时,
  //此时若想关闭Activity,
  //它会调用自己的onPause函数,
  //所以需要在onPause中关闭ProgressDialog,
  //然后再关闭Activity
  if(progressDialog!=null){
   if(progressDialog.isShowing()){
    progressDialog.dismiss();
   }
  }

由于上面提到过,当用ActivityGroup来管理的时候,它的生命周期和activity走的不一样,故在此重写的是onPause而不是onDestory.

抱歉!评论已关闭.