| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 移动开发 -> Android classloader 加载 -> 正文阅读 |
|
[移动开发]Android classloader 加载 |
Java虚拟机 ?是基于栈的虚拟机 ? Apt dalvik 虚拟机 是基于寄存器的虚拟机 什么是栈虚拟机 ??每一个运行的线程都有一个独立的栈,每个方法成为一个栈帧 ,基于虚拟机的栈是通过栈帧里面的操作数栈来进行所有操作 什么是寄存器 ?? 寄存器是cpu的一部分 ?是个存贮单元,可暂存指令和数据 寄存器虚拟机的分类 Dalvik 是字节码解释执行 和JIT(just in Time)即时编译 一起的 ??dexopt操作将dex 字节码优化转化成odex文件 APT ??是通过dex2oat操作 将dex字节码直接转化成当前手机的机器码 ? Android N 以上的操作是进行混编 ?即时编译 ?jit ?加上ART 如果执行ART操作的话 ??安装app的时候需要将dex字节码文件进行转化为机器码 这样安装apk速度太慢 ,所以7.0之后就用混合编译 ?开始还是用dalvik加载jit进行操作 jit编译过的方法记录在一个配置文件里面 ??在设备闲置充电的时候 ?在后台启用个线程进行dex2oat 进行 转化本地机器码操作 ?? Android类加载机制 classloader? ? 双亲委托机制
? 下面两张图 是介绍 dexElements怎么来的 Dexpathlist构造函数中传入的dex地址 ?MakepathElement方法通过传入的地址 得到dexElements 是个数据 每个element相当于个dex文件 类加载 时序图 ?Android ?29 ??10以及以上版本 ? 当Android10 以及以上版本时候保存文件等就不能直接当道sdcrad中了,需要分区权限 解决上面的问题 ?有两种方法 ? 第一种 ?: ???android:requestLegacyExternalStorage="true" 在application中增加前面的代码 ?禁止禁止分区操作 第二种 :放到私有目录 ?也就是 sdcard中 ?Android/data/应用包名路径 |
|
移动开发 最新文章 |
Vue3装载axios和element-ui |
android adb cmd |
【xcode】Xcode常用快捷键与技巧 |
Android开发中的线程池使用 |
Java 和 Android 的 Base64 |
Android 测试文字编码格式 |
微信小程序支付 |
安卓权限记录 |
知乎之自动养号 |
【Android Jetpack】DataStore |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 9:44:29- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |