从0开始认识android(一):系统与进程的关系

该系列的文章只是本人的一些个人理解随笔,也深怕误人子弟,如果理解有错的地方还希望看到的朋友指正,不胜感激!!!
  
  这篇主要理解安卓系统与我们的APP间的关系,当我们的APP被安装进手机中的那一刻,会发生什么呢?我们来看安卓文档中的这一段话:

安装到设备后,每个 Android 应用都运行在自己的安全沙箱内:
  Android 操作系统是一种多用户 Linux 系统,其中的每个应用都是一个不同的用户;
  默认情况下,系统会为每个应用分配一个唯一的 Linux 用户 ID(该 ID 仅由系统使用,应用并不知晓)。系统为应用中的所有文件设置权限,使得只有分配给该应用的用户 ID 才能访问这些文件;
  每个进程都具有自己的虚拟机 (VM),因此应用代码是在与其他应用隔离的环境中运行;
  默认情况下,每个应用都在其自己的 Linux 进程内运行。Android 会在需要执行任何应用组件时启动该进程,然后在不再需要该进程或系统必须为其他应用恢复内存时关闭该进程。

  可以理解为手机(仅仅是硬件)就是一个大房子,而安卓系统就是这个房子的一个大管家,每个APP就相当于一个人,大管家会分配给每个人一个带锁的房间,房间里放着这个人的代码啊,资源文件啊等私人物品,接着给你一把唯一的钥匙(即上述的Linux用户ID),只有你这把钥匙能打开你的房间,访问你房间里的东西(代码,资源文件等),其他人的钥匙则无法打开.反之,你的钥匙也没法打开其他人的房间,这样一来,每个人房间里的东西就都是安全的了。
  但现在讲究的是资源共享,那APP间如何分享资源呢,方法还是有滴:

  1.可以安排两个应用共享同一 Linux 用户 ID,在这种情况下,它们能够相互访问彼此的文件。 为了节省系统资源,可以安排具有相同用户 ID 的应用在同一 Linux 进程中运行,并共享同一 VM(应用还必须使用相同的证书签署)。
  2.应用可以请求访问设备数据(如用户的联系人、短信、可装载存储装置 [SD 卡]、相机、蓝牙等)的权限。 用户必须明确授予这些权限。 如需了解详细信息,请参阅 使用系统权限。

  对于第一点,结合上面的例子,就是说如果你想把你的东西共享给另外一个人,你只需要把你的钥匙给他,与你共用一个房间就行了.正所谓不是一家人,不进一家门,如果你自家的公司也有类似360全家桶,百度全家桶等多个应用,那为了优化一下,还是可以考虑安排两个应用共享同一 Linux 用户 ID的:即在清单文件的的 根节点manifest 中使用 sharedUserId 属性,为它们分配相同的用户 ID,需要注意的是,这两个应用必须使用相同的打包签名, android系统才会分配同一个 Linux 用户ID给他们!-
  而第二点有过合租经历的同学应该就很容易理解了,合租时虽然各有各的卧室,但房子里还是有客厅等公共空间的,公共空间里的东西都是共用的,谁都可以用,只不过用之前,你要跟大管家申请一下.

猜你喜欢

转载自blog.csdn.net/jack_bear_csdn/article/details/80283381