Activity的tab分页生命周期

常常遇到这种情况:

tab分页中装了几个activity,每当它们创建时的activity生命周期调用情况就会让人感到混乱。这次做了个test好好弄清下这个调用过程,以及怎样设置返回键的调用事件。

 

mainactivity中用tab分页装四个intent意图(aActivity、bActivity,cActivity,dActivity).并且设置一开始显示的页是第一页即aActivity.则activity生命周期过程如下:

启动应用:
mainActivity onCreate(),
aActivity onCreate(),
mainActivity onCreate()

注意:此时如果不做任何操作则其他三个分页的onCreate()方法还没调用,只有当点击不同分页tab切换到那一页时,那一页的onCreate()方法才被调用。
也就是说此时只有第一个页面的activity被创建了,这种情况下,点击返回键结束应用会调用:
mainActivity finish()
,aActivity finish()
,aActivity destory(),
mainActivity destory();


另外一种情况:即启动应用后分别点击了其他几个分页的tab,切换到过那几个分页,那几个分页的on Create()方法都被调用了,
这时结束应用且当前tab页在aActivity页,则调用方法为:
mainActivity finish(),
aActivity finish(),
aActivity destory(),
bActivity destory(),
cActivity destory(),
dActivity destory(),
mainActivity destory();

如果结束应用且当前tab页在bActivity页,则调用方法为:
mainActivity finish(),
bActivity finish(),
aActivity destory(),
bActivity destory(),
cActivity destory(),
dActivity destory(),
mainActivity destory();
如果结束应用且当前tab页在cActivity页,则调用方法为:
类似上面的先调mainActivity finish(),cActivity finish()再依次调用四个destory();

注:每个tab分页onCreate()方法创建后,在切换tab页时不会再次被调用。

 

此外再说一下点击对按下返回按钮的监听顺序:
onbackPressed()方法不好用,例如此处要实现的效果是点击返回键,弹出提示退出对话框:则应在每个分页中写下下面的函数(注意是每个tab里,而不是mainActivity中):

@Override
 public boolean onKeyDown(int keyCode, KeyEvent event) {
  System.out.println("------onKeyDown-----");
  if (keyCode == KeyEvent.KEYCODE_BACK) {
   AlertDialog.Builder builder = new AlertDialog.Builder(this);
   builder.setMessage("你确定退出吗?")
     .setCancelable(false)
     .setPositiveButton("确定",
       new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog,
          int id) {
         finish();
        }
       })
     .setNegativeButton("返回",
       new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog,
          int id) {
         dialog.cancel();
        }
       });
   AlertDialog alert = builder.create();
   alert.show();
  
  }
  return super.onKeyDown(keyCode, event);
 }


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

子林Android

感谢老板,老板大气!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值