Android WMS——Dialog和Toast窗口创建(五)

本文详细分析了Android中Dialog和Toast窗口的创建过程。Dialog显示通过setContentView和show完成,关闭时通过WindowManager移除DecorView。Toast窗口的创建涉及IPC通信,通过NotificationManagerService进行显示和隐藏。Toast数量有限制,超过5条将不再显示,显示过程由ToastPresenter处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        前面文章介绍了 Activity 窗口创建的流程,这里我们在看一下 Dialog 和 Toast 窗口创建的流程。

一、Dialog窗口创建

        Dialog 中创建 Window 是在其构造方法中完成。

1、Dialog显示

源码位置:/frameworks/base/core/java/android/app/Dialog.java

private final WindowManager mWindowManager;

Dialog(@UiContext @NonNull Context context, @StyleRes int themeResId, boolean createContextThemeWrapper) {

    ……
    // 获取 WindowManager
    mWindowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
    // 创建 Window
    final Window w = new PhoneWindow(mContext);
    mWindow = w;
    // 设置 Callback
    w.setCallback(this);
    w.setOnWindowDismissedCallback(this);
    w.setOnW
Android WMS(Window Manager Service)是Android系统中的一个重要组件,它负责管理窗口创建、移动、调整大小、绘制显示等操作。在Android系统中,所有的窗口都是由WMS来管理的,包括Activity、DialogToast、PopupWindow等等。WMSAndroid系统中最底层的窗口管理服务,负责协调各个窗口之间的关系,以保证窗口能够正确地显示在屏幕上。 WMS主要包括以下几个部分: 1. 窗口管理器:负责窗口创建、移动、调整大小、绘制显示等操作。 2. 窗口策略:负责根据窗口的属性状态,决定窗口的显示方式位置。 3. 输入管理器:负责接收用户的输入事件,并将其分派给合适的窗口处理。 4. 动画管理器:负责窗口的动画效果,如打开、关闭、移动等。 5. 窗口回收器:负责回收不需要显示的窗口,以释放资源。 WMS采用了客户端-服务器架构,客户端包括应用程序系统服务,而WMS则是一个系统服务。当应用程序或系统服务需要创建一个窗口时,它会向WMS发送请求,WMS则根据窗口的属性状态来决定窗口的显示方式位置。在窗口创建完成后,WMS会将其添加到窗口列表中,并为其分配一个标识符,以便之后进行管理。 在Android系统中,WMS是一个非常重要的组件,它直接影响着用户的体验系统的稳定性。因此,了解WMS的工作原理内部机制,对于Android开发人员来说是非常有必要的。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

c小旭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值