遇到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.