须知少年凌云志,曾许人间第一流。这篇文章主要讲述Android开发——diglog cancel与dismiss方法区别相关的知识,希望能为你提供帮助。
AlertDialog dismiss 和 cancel方法的区别
AlertDialog使用很方便,但是有一个问题就是:dismiss方法和cancel方法到底有什么不同?
今天有时间,看了看源码(其实源码并不是全都那么深奥的!~~)。
AlertDialog继承与Dialog,现在各位看看结构图:
文章图片
然后在Dialog类中找到了dismiss和cancel方法的实现。重要看dismiss的源码:
java代码
文章图片
- public void cancel() {
- if (mCancelMessage != null) {
- // Obtain a new message so this dialog can be re-used
- Message.obtain(mCancelMessage).sendToTarget();
- }
- dismiss();
- }
private Message mCancelMessage; // 这是源码中的声明
然后再来看源码:
Java代码
文章图片
- public void setOnCancelListener(final OnCancelListener listener) {
- if (listener != null) {
- mCancelMessage = mListenersHandler.obtainMessage(CANCEL, listener);
- } else {
- mCancelMessage = null;
- }
- }
- ublic void setCancelMessage(final Message msg) {
- mCancelMessage = msg;
- }
推荐阅读
- CSAPP 3e: Bomb lab (phase_4)
- 上传到App Store时5.5寸图和iPad pro图报错
- 酷划锁屏手机赚钱APP的使用经验分享
- 如何导出android内部存储的文件(不用root)
- Android开发——Toast知识
- CSAPP 3e: Bomb lab (phase_2) + lab中的GDB 使用
- CSAPP 3e: Bomb lab (phase_1)
- visual studio xamarin 离线安装文件以及 android 模拟器
- 转载 - TrueCrypt发生了什么( - What happened to Truecrypt - May 2014)