Android 申请流程

Android application process

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

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

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

现在,此服务将由另一个 android 应用程序使用 aidl 远程访问,该应用程序具有应用程序标签并且内部有 Activity。访问上面的远程服务。

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

我的假设

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

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

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

Whenever anyone creates android application which generates *.apk file and installed this apk on device, can we surely say that android has created new process for this apk ?

没有。安装应用程序不会为该应用程序创建一个进程。

can we say that service accessing App and remote service both are different process ? I think Yes.

默认情况下,它们将处于不同的进程中。

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

所以只有当您启动 application.And 假设时,它才会创建一个新进程,您可以为同一个 apk 创建任意数量的进程,这只是一个容器。

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