Android应用性能优化系列视图篇——优化之路从Window开始

众所周知,Activity是Android应用程序的载体,允许用户在其上创建一个用户界面即视图,而这个视图又是通过Window来管理,同样,Dialog的视图其实也是通过Window来管理。而Window又是通过WindowManager将视图呈现到手机屏幕上。总而言之,Window在用户界面即视图中扮演着至关重要的角色。所以,如果要做好视图性能优化,理解Window的本质则是第一步!

那么,Window到底是一个什么样的存在呢?

以Activity为例,当一个Activity被实例化后,首先会被调用其attach方法,具体过程详见Android系统源码。attach方法中有一个非常重要的逻辑,那就是创建Window(API 22源码)。

    final void attach(...) {
        ...
        mWindow = new PhoneWindow(this);
        mWindow.setCallback(this);
        mWindow.setOnWindowDismissedCallback(this);
        mWindow.getLayoutInflater().setPrivateFactory(this);
        if (info.softInputMode != WindowManager.LayoutParams.SOFT_INPUT_STATE_UNSPECIFIED) {
            mWindow.setSoftInputMode(info.softInputMode);
        }
        if (info.uiOptions != 0) {
            mWindow.setUiOptions(info.uiOptions);
        }
        ...
        mWindow.setWindowManager(
                (WindowManager)context.getSystemService(Context.WINDOW_SERVICE),
                mToken, mComponent.flattenToString(),
                (info.flags & ActivityInfo.FLAG_HARDWARE_ACCELERATED) != 0);
        if (mParent != null) {
            mWindow.setContainer(mParent.getWindow());
        }
        mWindowManager = mWindow.getWindowManager
  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值