JanusKun
JanusKun
群号是啥?加一下 一起交流
你们是把引用库拿出来到本地改源码处理这个问题的吗?
有合适的处理方法没?
大佬们 处理了吗?有好的方法没?
刚碰到,请问你处理了没?
Android应用的启动流程可以概括为以下步骤: 1. **用户点击应用图标**:Launcher进程通过Binder IPC机制,向系统进程(system_server)发起启动应用的请求。 2. **系统进程处理请求**:系统进程的ActivityManagerService(AMS)接收到请求后,会进行一些准备工作,比如检查应用进程是否已经存在。 3. **创建应用进程**:如果应用进程不存在,AMS会通过Zygote进程fork出一个新的应用进程。然后,AMS会通过Socket通信通知Zygote进程fork新进程,新进程会执行ActivityThread的main方法。 4. **应用进程初始化**:在应用进程中,ActivityThread的main方法被调用,这是应用进程的入口点。在这里会创建主线程(UI线程)的消息循环(Looper),并实例化ActivityThread对象,然后通过Binder机制将应用进程的应用线程对象(ApplicationThread)注册到AMS中,这样AMS就可以通过这个代理对象控制应用进程。 5. **创建Application**:AMS通过应用进程的应用线程对象(ApplicationThread)发送消息,通知应用进程创建Application。应用进程接收到消息后,通过反射创建Application对象,并调用其onCreate()方法。 6. **启动主Activity**:AMS继续发送消息给应用进程,要求启动主Activity。应用进程会创建主Activity的实例,并依次调用其onCreate()、onStart()、onResume()方法。 7. **界面显示**:Activity的onResume()方法执行完成后,会进行View的绘制流程(measure、layout、draw),然后将界面显示出来。