Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/220.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android启动应用程序的过程是什么?它在运行时如何与R类交互?_Android_Dalvik_Internals_Art Runtime - Fatal编程技术网

android启动应用程序的过程是什么?它在运行时如何与R类交互?

android启动应用程序的过程是什么?它在运行时如何与R类交互?,android,dalvik,internals,art-runtime,Android,Dalvik,Internals,Art Runtime,最近,当我学习Android的资源管理时,我遇到了一些有趣的问题 1) 从Android运行时的内部角度来看,Android操作系统采取了哪些步骤来启动已安装的应用程序 2) R类-R类是资源静态数值的容器。但最后它是一个整数的集合。android如何在内部将这些整数映射到资源 setContentView(R.layout.activity_main); 这里传递的setContentView()是一个int。但它映射到activity\u main.xml文件 字符串等资源也是如此。资源

最近,当我学习Android的资源管理时,我遇到了一些有趣的问题

1) 从Android运行时的内部角度来看,Android操作系统采取了哪些步骤来启动已安装的应用程序

2) R类-R类是资源静态数值的容器。但最后它是一个整数的集合。android如何在内部将这些整数映射到资源

setContentView(R.layout.activity_main); 
这里传递的
setContentView()
是一个int。但它映射到activity\u main.xml文件


字符串等资源也是如此。资源文件、代码和R类之间的连接在运行时似乎有点混乱。

R类将资源id映射到编译时生成的资源,xml中的所有资源id都保存在编译时

Android API在运行时使用id查找资源本身

1) 从Android运行时的内部角度来看,需要哪些步骤 由android操作系统启动已安装的应用程序

如果应用程序在安装后第一次启动,android系统必须执行以下3个步骤
1.加载并启动应用程序
2.在应用程序启动后立即显示一个空白启动窗口&
3.为应用程序创建流程。
这些是安卓系统的职责

一旦android运行时通过上述步骤创建了应用程序进程,那么控件将与应用程序进程本身一起执行进一步的步骤,以使应用程序及其组件完全可供执行。其中包括以下内容,
1.正在创建应用程序对象。
2.启动主线程或UI线程
3.创建主活动实例。此活动通常具有用户在启动后看到的应用程序UI
4.膨胀活动中包含的视图。这包括视图组/视图层次结构中的所有视图
5.布置屏幕。
6.执行初始绘制。

2) R类-R类是一个容器,用于存储 资源。但最后它是一个整数的集合。安卓怎么样 在内部将这些整数映射到资源

Android Build system有许多工具,其中一个称为
aapt
工具,这个工具是生成R类的工具,该类包含res/目录中所有资源的资源ID。对于每种类型的资源,都有一个R子类(例如,对于所有可绘制资源,
R.drawable
),对于该类型的每种资源,都有一个静态整数(例如,
R.drawable.icon

现在你的应用程序中所有非代码的东西都在R.java中了。Android资源系统跟踪与应用程序相关的所有非代码资产,这是管理所有资源ID映射的内部系统,除此之外,Android框架还有一个名为
Resources
的类,您可以使用该类访问应用程序的资源,android构建系统将其打包到
R.java

通常,您可以使用
getResources()
获取与应用程序关联的资源实例