AlertDialog dismiss 和 cancel方法的区别

简介: Dialog类中找到了dismiss和cancel方法的实现。 看dismiss的源码:   public void cancel() { if (mCancelMessage != null) { // Obtai...

 Dialog类中找到了dismiss和cancel方法的实现。 看dismiss的源码:

 

 public void cancel() {
        if (mCancelMessage != null) {
            
            // Obtain a new message so this dialog can be re-used
            Message.obtain(mCancelMessage).sendToTarget();
        }
        dismiss();
    }

 

在cancel方法中调用了dismiss方法。 那么:mCancelMessage是什么?

    private Message mCancelMessage; // 这是源码中的声明

 public void setOnCancelListener(final OnCancelListener listener) {
        if (listener != null) {
            mCancelMessage = mListenersHandler.obtainMessage(CANCEL, listener);
        } else {
            mCancelMessage = null;
        }
    }

public void setCancelMessage(final Message msg) {
        mCancelMessage = msg;
    }

如果  创建AlertDialog的时候设置了setOnCancelListener 这个mCancelMessage变量有作用,那么cancel 比dismiss要多做一些任务,否则dismiss和cancel等同

 

 

 

目录
相关文章
|
资源调度
yarn配置镜像源
node学习笔记
3242 0
yarn配置镜像源
Debian 官方源换为国内的源的操作方法
apt-get update 报错,采用更换源的方式解决问题。
55877 0
|
自然语言处理 程序员 开发工具
iOS生成Bundle 资源文件包与使用
iOS生成Bundle 资源文件包与使用
619 0
|
开发工具 iOS开发
制作传统动态库和静态库遇到的问题
制作传统动态库和静态库遇到的问题
116 1
|
存储 JavaScript 小程序
微信小程序可以进行dom操作吗?
微信小程序可以进行dom操作吗?
|
Ubuntu 物联网 编译器
iOS编译openssl实践
之前建设的跨平台全链路智能语音交互系统一直只跑在Android系统(主要是Iot设备),没有iOS业务场景,最近经过不断的努力,终于要把这个能力推广到B端APP,面向B端用户,这个时候就有了iOS的述求,毕竟从能力建设之初就吹出去了,系统是跨平台的,这个时候不能掉链子。
711 0
|
存储 安全 API
iOS AutoReleasePool 自动释放池以及RunLoop分析(下)
1.runloop是什么? 2.runloop和线程的关系? 3.runloop是什么时候创建的?
864 0
|
Shell iOS开发 MacOS
将iOS项目进行子工程化(二)
将iOS项目进行子工程化
355 0
将iOS项目进行子工程化(二)