android 创建单例对话框_Android基于DialogFragment封装一个通用的Dialog

本文介绍了如何基于DialogFragment封装一个通用的Android Dialog——SYDialog,以解决单例Dialog可能导致的问题。SYDialog支持内置样式、自定义布局、动画设置以及统一管理多个Dialog的顺序弹出。通过示例代码展示了如何使用SYDialog及其功能。
摘要由CSDN通过智能技术生成

原标题:Android基于DialogFragment封装一个通用的Dialog

一、背景

Dialog是项目中最常用的一个功能之一了,接手项目的时候发现项目中是封装了一个dialog的,但是发现是用单例封装的,大致如下:

privateMyDialog(){

}

publicstaticMyDialog getInstance(){

returnDialogHolder.instance;

}

privatestaticclassDialogHolder{

privatestaticMyDialog instance = newMyDialog();

}

publicvoidshow(){}

publicvoiddismiss(){}

使用单例除了可能会有内存泄漏问题,在使用过程中还发现一个问题:不同页面的dialog可以相互影响,想想也对,因为全局只有一个dialog嘛,项目中有一个场景:A页面跳B页面,一进B页面的onCreate()时需要弹一个dialog,发现每次都弹不出来,debug发现原来在A页面的onStop()方法里调用了dismiss()方法,A页面跳B页面生命周期走的是:

A页面: onPause()

B页面: onCreate()

B页面: onStart()

B页面: onResume()

A页面: onStop()

所以原因也找到了,每次在B的onCreate()里面刚调用了show(),紧接着又调用了A的onStop

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值