欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Activity 是什么?(sundy深入浅出)之四大组件和Intent

程序员文章站 2022-06-30 18:21:16
...

 

写在前面的话:本系列主要是学习sundy的Android深入浅出视频中的一些记录,心得。方便自己以后查阅。也供大家查看。欢迎交流,补充。

一般作为面试题(有些有答案,有些没有。问题一般从sundy老师思维导图中摘录,答案并非唯一标准,仅供参考):

 

1、Acitivy实际是如何实例化的 ?

在ContextImpl类里可以看到

 

 mMainThread.getInstrumentation().execStartActivity(
            getOuterContext(), mMainThread.getApplicationThread(), null, null, intent, -1);

在Instrumentation类中execStartActivity方法中

 

int result = ActivityManagerNative.getDefault()
                .startActivity(whoThread, intent,
                        intent.resolveTypeIfNeeded(who.getContentResolver()),
                        null, 0, token, target != null ? target.mEmbeddedID : null,
                        requestCode, false, false);

activity的实例化是由虚拟机来操作的

更准确的答案参照:

http://www.cnblogs.com/chinabinner/archive/2011/11/19/2255374.html

 

2、Activity的生命周期是如何注册和监控的 ?

使用的观察者模式。有一个类叫 ActivityMonitor,是一个观察者。


3、Activity跟Binder的关系是什么?

从宏观的角度观察Binder,Service,Service Manager,并阐述各自的概念。从Linux的概念空间中,Android的设计Activity托管在不同的的进程,Service也都是托管在不同的进程,不同进程间的Activity,Service之间要交换数据属于IPCBinder就是为了Activity通讯而设计的一个轻量级的IPC框架。