您的位置:首页>聚焦>房产 >内容

activity百度百科(ActivityGroup做了什么)

2022-06-29 03:38:57来源:
导读想必现在有很多小伙伴对于ActivityGroup做了什么方面的知识都比较想要了解,那么今天小好小编就为大家收集了一些关于ActivityGroup做了什...

想必现在有很多小伙伴对于ActivityGroup做了什么方面的知识都比较想要了解,那么今天小好小编就为大家收集了一些关于ActivityGroup做了什么方面的知识分享给大家,希望大家会喜欢哦。

Activity和ActivityGroup的关系看起来很像View和ViewGroup,对比一下:ViewGroup继承了View并实现内部嵌入View。

不管是View还是ViewGroup,在调用者看来都是一样的,只需要给它发送相应事件,并将View的内容显示到屏幕上ActivityGroup也继承了Activity,只是内部的Activity系统不会存档,不会像task那样做栈式切换。

系统不知道这种Activity的存在,你也就没法给它发送intent先看看普通Activity的运作过程:这个有点复杂,先从启动app说起。

每个App有一个ActivityThread实例,启动都是从这里开始的。

Activity启动后会新建binder等待ActivityManagerService(AMS)发送建立Activity的命令。

执行监听的就是ApplicationThread类,而H是一个handler用于执行Activity的操作ApplicationThread接到新建Activity的命令时,就会调用H执行新建Activity的操作。

建立Activiyt的过程中,会建立一个PhoneWindow实例。

每个PhoneWindow中都含有DecorView(View子类),调用setContentView()时就是给它添加子View。

建立PhoneWindow的过程中,会得到WindowManager实例,其中有W用于监听WindowManagerService(WMS)发出的事件。

同时建立ViewRoot用于实现各种事件分发和刷新。

View中的invalidate()方法调用parent.invalidate()执行刷新,最后就传到ViewRoot上了这基本上就完成了一个正常健全的Activity的创建过程。

而Activity内嵌的SubActivity就少了很多吧有点偷懒的意思。

新建SubActivity时不需要向AMS中发送新建的请求,AMS也就不知道这些SubActivity的存在,所以WindowManagerService也不会向SubActivity发送各种事件。

所以说,SubActivity仅仅建立了一个不会起作用的窗口。

窗口中的DecorView也没有设置ViewParent,所以你才可以将DecorView拿出来再添加到别的ViewGroup中。

SubView的作用就相当于一个View,当然,它的各种事件虽然不会被AMS调用,但是会被ActivityGroup调用。

这样内嵌的Activity就变得看似和正常Activity一样了。

总结一下:它在内部新建了Activity,拿出Activity内部View,并放在自己的View中进行显示;同时会将接收的Activity事件分发给内部Activity。

后来的后来,Android又搞了个叫Fragment的东西来取代ActivityGroup的功能。

本文到此结束,希望对大家有所帮助。

免责声明:本文由用户上传,如有侵权请联系删除!

猜你喜欢

最新文章