一个app有多少个window?

我目前的理解是:
一般场景下常见的(忽略menu和状态栏,一般用不到):
application+activities+(dialog)+(popupwindow)+(toast)+?
所以是:1+activities+(1)+(1)+(1)+?
?:指还有待补充的。
():指可能会出现的
看源码,我觉得dialog,toast的window都是new 出来的phonewindow,应该和挂载在当前activity,其所依附的window不是同一个吧?
有点怀疑自己,求赐教,谢谢

阅读 11.1k
3 个回答

楼主,应该是看了 《Android开发艺术探索》当中的第八章,对Window的理解吧? 作者在后面留了一个问题就是楼主你提的问题:

这里我也看了,从Activity启动的attach就能看出来是无限的,因为Window的唯一实现类是PhoneWindow,比如说我现在启动一个Activity,在ActivityThread中开始,调用启动Activity,到最后的实例化完成Activity之后会调用Activity的 attach方法,该方法中就对 PhoneWindow做了实例化

final void attach(Context context, ActivityThread aThread,
            Instrumentation instr, IBinder token, int ident,
            Application application, Intent intent, ActivityInfo info,
            CharSequence title, Activity parent, String id,
            NonConfigurationInstances lastNonConfigurationInstances,
            Configuration config, String referrer, IVoiceInteractor voiceInteractor,
            Window window) {
        ···
        mWindow = new PhoneWindow(this, window);
        ···
    }

可以私信探讨!

诶,问了几个问题都没有回应,是我的问题太简单了,还是没有什么意义?感觉好冷清

新手上路,请多包涵

我认为是无限个,书中提到任何一个View都是依附在Window上面,一个应用可以有无限个View,自然Window也是无限个。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏