Re:Android Dialog中Handler的使用
2018-01-09 18:14
218 查看
public class Dialog implements DialogInterface{ private Message mDismissMessage;//窗口消失时候的Message实例 private static final int DISMISS = 0x43;//咱们只看dissmiss这个状态,cancel和show是同理 private final Handler mListenersHandler;//一个Handler实例 Dialog(@NonNull Context context, @StyleRes int themeResId, boolean createContextThemeWrapper) { mListenersHandler = new ListenersHandler(this);//ListenersHandler内部类,继承了Handler } private void sendDismissMessage() { if (mDismissMessage != null) { Message.obtain(mDismissMessage).sendToTarget();//Message.obtain(message)想当于copy一个新的message, 每一个Message中有一个Handler索引,sendToTarget方法内部调用Handler.sendMessage(this)发送信息。 } } public void setOnDismissListener(@Nullable DialogInterface.OnDismissListener listener) { if (listener != null) { mDismissMessage = mListenersHandler.obtainMessage(DISMISS, listener);//handler的obtainMessage(what,Object)方法返回一个what等于DISMISS,Object等于listenter,Target等于handler的Message } else { mDismissMessage = null; } } private static final class ListenersHandler extends Handler { private final WeakReference<DialogInterface> mDialog; public ListenersHandler(Dialog dialog) { mDialog = new WeakReference<DialogInterface>(dialog);//弱引用 } @Override public void handleMessage(Message msg) { switch (msg.what) {//联系上了,msg.what肯定是DISMISS case DISMISS: ((DialogInterface.OnDismissListener) msg.obj).onDismiss(mDialog.get());//msg的obj就是Listener呗,调用其中的onDismiss方法。 break; } } } }
忘记了handler使用的时候,就看看大神的代码。
相关文章推荐
- Android中Handler的使用方法——在子线程中更新界面
- 在Android程序里显示等待滚动圈(使用ProgressDialog)| Show waiting rolling circle in android application (using ProgressDialog)
- Android高手进阶教程(九)之----Android Handler的使用!
- Android使用Handler的两种方法
- Android中Handler的使用
- Android的消息机制,用Android线程间通信的Message机制,Android中Handler的使用方法——在子线程中更新界面,handler机制
- Android高手进阶教程(九)之----Android Handler的使用!!!
- Android分享之ProgressDialog使用
- 【Android】Handler使用入门
- android handler的使用
- Android Handler的使用
- Mars Android视频学习笔记——01_14/15_Handler的使用
- 在Android中使用Handler和Thread线程执行后台操作
- Android之AlertDialog的使用
- Android高手进阶教程(九)之 ----Android Handler的使用
- 【Android】Handler使用入门
- Android中Handler的使用方法——构建定时器
- Android 例子: Dialog的使用--- AlertDialog功能演示一
- Android中Handler的使用方法——在子线程中更新界面
- Android中Handler的使用方法——在子线程中更新界面