首页 > 系统相关 >Android进程创建流程-2

Android进程创建流程-2

时间:2024-04-22 16:34:15浏览次数:24  
标签:daemon java thread Thread cc 创建 流程 bool Android

一、java线程创建流程

1. 部分调用逻辑

        Runtime::AttachCurrentThread(const char* thread_name, bool as_daemon, jobject thread_group, bool create_peer)
        Runtime::Init(RuntimeArgumentMap&& runtime_options_in) //runtime.cc 备注说"ClassLinker needs an attached thread"
            Thread::Attach(const char* thread_name, bool as_daemon, jobject thread_peer)
            Thread::Attach() //4个参数的
                Thread::Attach(const char* thread_name, bool as_daemon, PeerAction peer_action)
    start() //ava/lang/Thread.java         
        Thread_nativeCreate(JNIEnv* env, jclass, jobject java_thread, jlong stack_size, jboolean daemon) //java_lang_Thread.cc
            Thread::CreateNativeThread(JNIEnv*, jobject, size_t, bool is_daemon) //thread.cc 作为pthread_create()这个函数的参数调用
                Thread::CreateCallback(void* arg) //thread.cc
                    Thread::Init(ThreadList*, JavaVMExt*, JNIEnvExt*= nullptr) //thread.cc 两个参数三个参数都行
jni/com_android_internal_os_Zygote.cpp 中有多处调用
    SpecializeCommon(JNIEnv* env, uid_t uid,...) //com_android_internal_os_Zygote.cpp  JNI调java
        callPostForkChildHooks(int runtimeFlags, boolean isSystemServer, boolean isZygote, String instructionSet) //Zygote.java
            postForkChild(int runtimeFlags, boolean isSystemServer, boolean isZygote, String instructionSet) //ZygoteHooks.java
                ZygoteHooks_nativePostForkChild(env, jclass, ...) //dalvik_system_ZygoteHooks.cc
                    Thread::InitAfterFork() //thread.cc
                        Thread::InitTid() //thread.cc
                            tls32_.tid = ::art::GetTid();
                                syscall(__NR_gettid); //utils.cc

TODO

 

标签:daemon,java,thread,Thread,cc,创建,流程,bool,Android
From: https://www.cnblogs.com/hellokitty2/p/18150874

相关文章

  • 使用C# 创建、填写、删除PDF表单域
    通常情况下,PDF文件是不可编辑的,但PDF表单提供了一些可编辑区域,允许用户填写和提交信息。PDF表单通常用于收集信息、反馈或进行在线申请,是许多行业中数据收集和交换的重要工具。PDF表单可以包含各种类型的输入控件,如文本框、复选框、下拉菜单、单选按钮等。本文将介绍如何使用C#......
  • 使用C# 创建、填写、删除PDF表单域
    通常情况下,PDF文件是不可编辑的,但PDF表单提供了一些可编辑区域,允许用户填写和提交信息。PDF表单通常用于收集信息、反馈或进行在线申请,是许多行业中数据收集和交换的重要工具。PDF表单可以包含各种类型的输入控件,如文本框、复选框、下拉菜单、单选按钮等。本文将介绍如何使用C#......
  • android studio Edit Custom VM Options后无法启动
    异常描述:想要修改虚拟器的内存,就百度了方法,设置了Help——EditCustomVMOptions,然后AndroidStudio就无法启动了,直接弹这个弹窗:所以,建议大家写文,还是要有头有尾,该上图上图,不能啪啪几个字让人猜啊,容易误导人的啊啊啊!!!解决问题:按这个路径查找到更改的文件,C:\Users\XXXX\AppDat......
  • JVM-part1-类加载子系统组成,及流程
    类加载子系统的作用:将所需要的Class文件进行加载,加载流程存在一下几个阶段:第一个阶段为加载阶段(Loading阶段):这个阶段是将引导类加载器和非引导类加载器需要加载的Class文件进行加载。具体来说:引导类加载器(BootStrapClassLoader):这个加载器的作用是将java_home/jre/lib下的Cl......
  • kubeadm创建集群
    官网:https://kubernetes.io/zh-cn/kubeadm创建集群请参照以前Docker安装。先提前为所有机器安装Docker1、安装kubeadm一台兼容的Linux主机。Kubernetes项目为基于Debian和RedHat的Linux发行版以及一些不提供包管理器的发行版提供通用的指令每台机器2GB或......
  • MAUI Android 透明状态栏/导航栏(也有叫沉浸式的)
    不说任何废话,上代码,不好用来打我Platforms/Android/MainActivity.csprotectedoverridevoidOnCreate(BundlesavedInstanceState){Google.Android.Material.Internal.EdgeToEdgeUtils.ApplyEdgeToEdge(Window,true);if(Operatin......
  • FFmpeg开发笔记(十六)Linux交叉编译Android的OpenSSL库
    ​《FFmpeg开发实战:从零基础到短视频上线》一书的例程主要测试本地的音视频文件,当然为了安全起见,很多网络视频都采用了https地址。FFmpeg若要访问https视频,就必须集成第三方的openssl库,但编译FFmpeg时却默认关闭了openssl。为了让App能够播放采用https的在线视频,需要编译安装并启......
  • 如何在linux中创建特定的脚本注释信息
    如何在linux中创建特定的脚本注释信息当然,以下是详细步骤在CentOS7系统中创建一个新的shell脚本模板并在Vim编辑器中配置自动加载模板的完整过程:步骤1:创建shell脚本模板首先,打开终端并创建一个模板文件,我们将其命名为.bash_script_template并放置在用户的家目录下:e......
  • 服务端与客户端的创建
    ServerSocketserver=newServerSocket(9999);//创建客户端,端口为9999Socketsocket=server.accept();//客户端与服务端连接InputStreamin=socket.getInputStream();BufferedReaderbr=newBufferedReader(newInputStreamReader(in));//将字节流转化为字符流,用缓......
  • 模拟器搭建流程
    第一个文件mmap_drvUbuntu中在客户端打开桌面文件mmap_drv这是个驱动文件,sudomake是编译命令,如果需要清理生成的驱动文件那就输入sudomakeclean.前面下驱动的指令已经完成并且安装第二个文件event_drvevent_drv文件也一样cd到他的位置然后sudomakeclean干净后再sudomake......