我是从 WPF 转向 Android 开发的。其中的所有内容都清晰简单,包括因为它可以在 Windows 操作系统中运行。应用程序在单独的进程中运行,并且窗口之间共享公共地址空间,这允许您创建自己的窗口类并向它们传递对象引用。在 Android 中,这不适用于活动。如果它有效,那么每个人都担心内存泄漏。因此,每个活动似乎都是孤立的,只能通过各种意图和捆绑接收数据的副本。对此,我有一个疑问。活动和其他组件在单独的 Linux 进程(可能是子进程)中运行,或者它们仍然代表一个公共进程的单独线程吗?我知道一些,OS Bindler中有一个特殊的程序,比如,只有它可以运行Android程序。感谢你的回答!
我从我的研究中找到了关于这个主题的讲座
•设备上安装的每个Android应用程序都在自己的沙箱(隔离的软件环境)中运行
•Android操作系统是一个多用户Linux系统,其中每个应用程序都是一个单独的用户;
•默认情况下,系统为每个应用程序分配一个唯一的Linux用户标识符(该标识符仅由系统使用,应用程序不知道);系统为应用程序中的所有文件设置权限,以便仅允许具有分配给该应用程序的标识符的用户访问它们;
每个进程都有自己的虚拟机(VM),以便应用程序代码与其他应用程序隔离运行;
•默认情况下,每个应用程序都在其自己的Linux 进程中运行。Android 在应用程序的某个组件需要运行时启动一个进程,然后在不再需要该进程或系统需要为其他应用程序释放内存时终止该进程。
由此可见,Android系统实现了授予最小权限的原则。也就是说,默认情况下,每个应用程序只能访问它需要操作的那些组件,而不能访问其他组件。这创建了一个极其安全的环境,其中应用程序无法访问系统的未经授权的区域