ActivityThread和android应用启动

2020-03-23  本文已影响0人  kevin查_5ff1

Android应用启动的入口
 
    android启动入口不是onCreate,而是ActivityThread的main。
ActivityThread的main方法
1、Envrionment.initForCurrentUser()     初始化应用中所使用的系统路径
2、EventLogger.setReporter(new EventLoggingReport()) 在libcore中为事件日志设置一个reporter
3、Security.addProvider(new AndroidKeyStoreProvider()) 增加一个保存key的provider
4、TrustedCertificateStore..setDefaultUserDirectory(configDir)  为应用设置当前用户的CA证书保存的位置
5、Process.setArgV0("<pre-initialized") 设置进程的名称
6、Looper.prepareMainLooper() 初始化主线程的looper
7、ActivityThread thread = new ActivityThread()  thread.attach(false) 创建ActivityThread对象并调用attach
8、Looper.loop() 让looper无限循环起来,进入消息循环
什么时候调用ActivityThread中的main方法呢?
    从Zygote进程fork出来应用进程后,会通过反射方法来调用,具体是通过RuntimeInit的invokeStaticMain方法调用
ActivityThread一个应用有几个呢?
    一个应用只会创建一个,启动的activity都保存在ActivityThread的mActivities中,这是一个ArrayMap<IBinder,ActivityClientRecord>

上一篇下一篇

猜你喜欢

热点阅读