Android应用程序进程启动过程(后篇)
2023-09-11 14:20:27 时间
前言
在前篇中我们讲到了Android应用程序进程启动过程,这一篇我们来讲遗留的知识点:在应用程序进程创建过程中会启动Binder线程池以及在应用程序进程启动后会创建消息循环。
1.Binder线程池启动过程
我们首先来看RuntimeInit类的zygoteInit函数,如下所示
frameworks/base/core/java/com/android/internal/os/RuntimeInit.java
注释1处会在新创建的应用程序进程中创建Binder线程池
2.消息循环创建过程
frameworks/base/core/java/android/app/ActivityThread.java
public static void main(String[] args) { Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "ActivityThreadMain"); SamplingProfilerIntegration.start(); ... Looper.prepareMainLooper();//1 ActivityThread thread = new ActivityThread();//2 thread.attach(false); if (sMainThreadHandler == null) { sMainThreadHandler = thread.getHandler(); } if (false) { Looper.myLooper().setMessageLogging(new LogPrinter(Log.DEBUG, "ActivityThread")); } Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER); Looper.loop();//3 throw new RuntimeException("Main thread loop unexpectedly exited"); }
注释1处在当前应用程序进程中创建消息循环,注释2处创建ActivityThread,注释3处调用Looper的loop,使得Looper开始工作,开始处理消息。可以看出,系统在应用程序进程启动完成后,就会创建一个消息循环,用来方便的使用Android的消息处理机制。
相关文章
- [Android Pro] android控件ListView顶部或者底部也显示分割线
- Android Studio-解决Fetching android sdk component information加载过久问题
- Android API之android.provider.ContactsContract.RawContacts
- 《android开发艺术探索》读书笔记(十一)--Android的线程和线程池
- 《android开发艺术探索》读书笔记(十五)--Android性能优化
- Android编译过程中的碎碎念
- Android开发指南(37) —— Data Backup
- 【Android】android studio ndk使用例子
- Android原生UI开发框架 《Jetpack Compose入门到精通》最全上手指南
- Android 的zygote进程
- Android 系统 SystemServer进程
- Android SQLite用sql语句进行增删改查
- android 9.0 SystemUI锁屏解锁界面隐藏导航栏解锁以后显示导航栏功能实现
- Android 获取所有手机联系人名单
- Android EditText编辑框随输入法移动并且在输入法上面
- Android 自定义3D效果View
- 【Android 逆向】Android 进程注入工具开发 ( Visual Studio 开发 Android NDK 应用 | 使用 Makefile 构建 Android 平台 NDK 应用 )
- 【Android 插件化】“ 插桩式 “ 插件化框架 ( 类加载器创建 | 资源加载 )
- 【Android 插件化】“ 插桩式 “ 插件化框架 ( 原理与实现思路 )
- 【Android 进程保活】提升进程优先级 ( 使用前台 Service 提高应用进程优先级 | 启动相同 id 的第二个前台 Service 关闭通知 )
- 【Android 进程保活】oom_adj 值 ( 简介 | 查询进程 PID | 根据进程 PID 查询 oom_adj 值 )
- Android之实现ViewPager+Fragment左右滑动
- Android修改kernel logo和开机动画(android)
- android解析XML总结(SAX、Pull、Dom三种方式) <转载>
- Android开发问题集锦(四)--双进程保活
- Win10 WSL编译Android开启ccache(提高编译速度)
- Android Studio NDK报错:mips64el-linux-android-strip 找不到