关于Android基础知识的一些说明?

时间:2013-10-09 06:40:23

标签: android

对Android开发来说很新,我对以下情况感到困惑,请帮助我。

我已经读过每个android应用程序都是一个单独的linux进程

默认情况下,每个Android应用程序都是一个单独的linux进程

但是我们可以在应用程序中启动一个单独的进程,例如:

我们可以将服务作为单独的流程运行

每个进程都在自己的VM中运行

如果名为“test”的应用程序启动2处理servicePr1和servicePr2,那么它将如何封装到应用程序(“test”)

如果我们启动两个进程,每个进程都有单独的VM?如果那么有3个VM包括应用程序吗?这些都是如何封装到应用程序中的?

如果我们关闭“test”,这两个进程servicePr1和servicePr2会作为单独的进程保留在内存中吗?

这些是否存在于任务管理器中?

封装,我的意思是

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.so.test" android:versionCode="1" android:versionName="1.0">
    <uses-sdk android:minSdkVersion="8" />

    <application android:icon="@drawable/icon" android:label="@string/app_name" 
     android:process="com.so.p1">
        <activity android:name=".Activity1">
        </activity>
        <activity android:name=".Activity2" android:process="com.so.p2">
        </activity>
        <activity android:name=".Activity3" android:process="com.so.p3">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

这里有3个流程从一个应用程序开始

Activity1 runs in com.so.p1 process
Activity2 runs in com.so.p2 process
Activity3 runs in com.so.p3 process

我读到每个android进程都在不同的VM上运行。

当应用程序“test”启动时,有四个具有相同UID的四个VM的android进程?

如果这4个进程在单独的VM中运行,可以说它是一个应用程序(4个单独的进程)

这4个流程是否会通过IPC相互沟通?

当我们退出应用程序时,这些进程会发生什么?将有三个进程留在记忆中。

1 个答案:

答案 0 :(得分:1)

应用程序启动的服务可以保持活动状态而不进行任何活动,具体取决于它们的启动和配置方式。根据{{​​3}},有两种服务:启动服务和绑定服务。对于已启动的服务:

  

当应用程序组件(例如活动)通过调用startService()启动它时,服务“启动”。一旦启动,服务可以无限期地在后台运行,即使启动它的组件被破坏。

任务管理器会看到所有正在运行的进程,因此任何正在运行的服务都将可见。

我不知道“封装到应用程序”是什么意思,所以我无法解决你问题的那一部分。

编辑(解决编辑问题)

指南主题the docs中介绍了这一点。

  1. 当应用程序“test”启动时,有四个android进程,其中四个VM具有相同的UID?

    当样本清单中的应用程序首次启动时,它将有两个进程,一个对应于应用程序,另一个对应于Activity3(主要启动组件)。如果Activity2启动,它将在第三个进程中运行。如果Activity1启动,它将在与应用程序本身相同的过程中运行。

  2. 如果这4个进程在单独的VM中运行,可以说它是一个应用程序(4个单独的进程)

    在不同进程中运行的组件(活动,服务,广播接收器,数据提供程序)是同一应用程序的一部分,因为Android系统中的内部簿记将组件标识为应用程序的一部分。 “应用程序”和“进程”是Android中的正交概念;应用程序可以分布在多个进程中,进程可以运行来自不同应用程序的组件(前提是应用程序共享相同的Linux用户ID并使用相同的证书进行签名)。

  3. 这4个过程是否会通过IPC相互通信?

    是的,流程通过IPC进行沟通。

  4. 当我们退出应用程序时,这些进程会发生什么?将三个进程留在内存中。

    这完全取决于系统。当流程中的最后一个组件完成时,该流程被归类为空流程。系统可以将其作为一种缓存形式保持活动,以加快应用程序的重启。请注意,系统也可能会终止具有实时组件的进程。这是Processes and Threads的一部分。