安卓申请流程

标签 android android-framework

我有一些非常基本的问题,很高兴得到答案。

问题 1. 每当有人创建生成 *.apk 文件并在设备上安装此 apk 的 android 应用程序时,我们可以肯定地说 android 已为该 apk 创建了新进程吗?

Q 2. Android 应用程序 list 文件是否有应用程序标签并且里面只有服务。如果它作为 apk 安装在设备上。

现在这个服务将被另一个使用 aidl 的 android 应用程序远程访问,它有应用程序标签并且里面有 Activity。访问上面的远程服务。

可以说服务访问App和远程服务是不同的进程吗?我想是的。

我的假设

  1. 任何在 list 文件中有标签并生成 apk 并安装在 android 设备上然后由任何其他应用程序远程启动或根据某些事件 Intent 启动自己的应用程序然后 android 框架将启动新进程以启动这个应用程序。请更正?

  2. 如果同一应用程序的任何组件要在另一个进程中运行,或者不同的应用程序组件要在同一进程中运行,则可以设置 android:process。

请仔细阅读后再回复,如果需要更多解释,请告诉我。

最佳答案

R1。 apk只是一个包。当您启动您的应用程序时,在底层,Android 所基于的 linux 机器将派生一个名为 Zygote 的进程。然后 Zygote 的副本(已经在其地址空间中映射了 Dalvik 机器的实例,或者 ART 库和提前编译的应用程序代码),将加载所有特定于应用程序的 java 类和所有核心依赖项( native 库),以及所有特定于应用程序的 native 代码。

因此它只会在您启动应用程序时创建一个新进程。假设您可以为同一个 apk 创建任意数量的进程,这只是一个容器。

R2。如果在 AndroidManifest 中您有一个声明为“已导出”的服务,它将在一个单独的进程中运行。然后,您的应用程序将使用称为 Binder 的 IPC 机制与该进程通信,该机制是内核级共享内存的特定实现。 AIDL 是一种在构建时解释的元语言,用于自动生成 Java stub ,这些 stub 将与 native Binder 代码深入协作。

关于安卓申请流程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28705766/

相关文章:

android - 如何在values/ids.xml中获取自定义id的引用

android - Android 平板电脑模拟器中未调用 Firebase 数据库 ValueEventListener onDataChange

android - 如何解决java.lang.NoSuchMethodError : android. widget.AbsListView.isItemChecked

android - 如何注册 OMX 内核以添加新的解码器

android - android framework-res模块中的 "android:"前缀是什么意思

android - 在 AOSP App 中添加一个 android 项目作为库

android - 获取原始联系人缩略图

android - 如何在新 Activity 中使用点击的图片?

java - 具有自定义内容 View 的 AlertDialog 看起来与 AlertDialog 完全不同