Activity对Dialog的管理

优点

一般我们使用dialog时,都会在使用的时候创建一个新的dialog对象,然后显示出来,这样虽然很简单,但是当场景变得复杂时,就会出现问题:

比如当我们需要多次弹出一样的一个或几个弹窗,如果我们每次都创建一个新的对象,就会创造出很多对象,导致内存开销增大,这显然是我们不愿意看到的。

又或者当我们dialog正在显示时,activity意外销毁,比如用户切换横屏模式,导致activity销毁重建,这时候如果你只是简单的创建并显示了dialog,你的dialog就会消失了。

但是当你把dialog交给activity去管理,这些就都不再是问题。activity可以让你的dialog轻松复用,并且可以保存并恢复其状态。

实现

下面我们就来看一下如何实现:

既然是把dialog交给activity管理,就要让activity能够识别每个dialog。识别的方式就是给每个dialog加个编号,这个编号是int类型的。

  1. 创建:要创建一个dialog,需要在onCreateDialog()中实现创建dialog的语句。当然,不能忘了id。这里通常会采用switch语句,每一个id创建一个不同的dialog,像这样:

    protected Dialog onCreateDialog(int id) {
        Dialog dialog;
        switch(id) {
        case 0:
            // do the work to define the 0 Dialog
            break;
        case 1:
            // do the work to define the 1 Dialog
            break;
        default:
            dialog = null;
        }
        return dialog;
    } 
  2. 调用:调用的时候只需要使用showDialog(int id)方法,这个传入的id自然就是前面定义好的id。

  3. 隐藏:想要dismiss的时候,可以用dialog自身的dismiss()方法,也可以用activity的dismissDialog(int id)方法。当dialog被dismiss之后,并没有被销毁,而是被activity保存了下来,下次调用的时候即可被复用
  4. 删除:如果不想被activity保存,则可以用removeDialog(int id)方法,删除某个dialog。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值