Android 安卓应用程序如何不干扰另一个

Android 安卓应用程序如何不干扰另一个,android,memory-management,operating-system,Android,Memory Management,Operating System,我对安卓非常陌生。我对安卓系统的操作系统有疑问 在Symbian操作系统中,当应用程序崩溃时,设备将关闭,并由自己打开 在安卓系统中,当一个应用程序崩溃时,它不会干扰另一个应用程序,这是怎么发生的,有人能解释一下,并建议我学习安卓系统的基础知识……安卓操作系统正在为每个应用程序启动一个新的dalvik机器实例。Dalvik是一种android的JVM 当应用程序运行时,它在自己的dalvik实例中运行 与此同时,android操作系统正在持续监视“dalvik机器”的所有实例。当其中一个没有响应

我对安卓非常陌生。我对安卓系统的操作系统有疑问

在Symbian操作系统中,当应用程序崩溃时,设备将关闭,并由自己打开


在安卓系统中,当一个应用程序崩溃时,它不会干扰另一个应用程序,这是怎么发生的,有人能解释一下,并建议我学习安卓系统的基础知识……安卓操作系统正在为每个应用程序启动一个新的dalvik机器实例。Dalvik是一种android的JVM

当应用程序运行时,它在自己的dalvik实例中运行


与此同时,android操作系统正在持续监视“dalvik机器”的所有实例。当其中一个没有响应时(在5或10秒内),Android操作系统会杀死“dalvik实例”并导致应用程序崩溃,但其他正在运行的应用程序都不会受到影响,因为它们在其他dalvik实例中运行。

Android会在自己的dalvik VM中运行每个应用程序,并采用非常严格的进程间通信方法。因此,如果一个应用程序崩溃,它不会影响任何其他应用程序,除非您自己引入依赖项(如依赖某个后台应用程序的应用程序)。

Android在Linux上运行;与POSIX兼容的现代操作系统

我想你能读到的最好的东西是。

来自

一旦安装到设备上,每个安卓应用程序都生活在自己的安全沙箱中:

  • Android操作系统是一个多用户Linux系统,其中每个应用程序都是不同的用户

  • 默认情况下,系统为每个应用程序分配一个唯一的Linux用户ID(该ID仅由系统使用,应用程序不知道)。系统为应用程序中的所有文件设置权限,以便只有分配给该应用程序的用户ID才能访问这些文件

  • 每个进程都有自己的虚拟机(VM),因此应用程序的代码与其他应用程序隔离运行

  • 默认情况下,每个应用程序都在自己的Linux进程中运行。Android在应用程序的任何组件需要执行时启动进程,然后在不再需要或系统必须为其他应用程序恢复内存时关闭进程

这样,Android系统实现了最小特权原则。也就是说,默认情况下,每个应用程序只能访问其工作所需的组件,而不能访问其他组件。这将创建一个非常安全的环境,在该环境中,应用程序无法访问未授予其权限的系统部分

总而言之:

每个应用程序都是自己的用户,具有自己的ID和权限,并且运行在与其他应用程序隔离的自己的VM中

因此,如果一个应用程序崩溃,其他应用程序不需要知道或关心此事件,因为它们运行在完全不同的虚拟化上下文中,崩溃的应用程序不会影响它们(除非它们共享一些资源,如由开发人员技能和系统级异常处理组合处理的文件)


这就是Android中应用程序分离的维护方式

不是所有现代操作系统都会出现这种情况吗?我最后使用的与Symbian操作系统类似的操作系统是Windows3.1(16位)。