为什么手机卸载一个几个G的软件瞬间就完成了,而电脑却需要很长的时间?

苹果iOS不了解,所以这里只讨论安卓和Windows在安装软件方面的区别。

Windows的大型软件通常都不是“绿色”的,需要安装,而且安装后的文件还不止一个。往往至少有一个exe文件,还有若干个dll,以及其他的资源文件(图片、视频、本地数据库等)。其中dll叫做动态链接库,可以用来和其他程序进行共享。比方说视频解码功能,就可以编写一个专门的dll。另外Windows还有一个com机制,它的dll共享功能更加强大,但是必须注册。所谓注册,就是写入注册表,通知操作系统其他软件如何调用它。

请注意,虽然开发人员不会经常自己写dll,但是会调用别人写好的共享dll,所谓的拿来主义。而使用它们,就必须在安装时也一并装上,注册上。

Windows的这种共享机制,使得Windows大型程序往往都有很多很多文件,还有很多很多写入注册表和写入系统目录的操作。

安卓的安装就显得简单很多。安卓同样也需要共享库,这是所有大型程序都必须的。但是安卓在安装是会把这些库,还有资源文件全部压缩打包(zip),变成一个apk文件。如果一个APP有1G,即是指这个apk单个文件有1G。如果是Windows,则可能是指成千上万个文件加起来1G。因为Windows没有打包。安卓的这种安装部署方式的好处就是简单,坏处就是没有实现真正的共享,造成空间浪费。这个好处坏处就不再展开讨论。反正大家现在明白了,安装时,安卓是将所有文件打包成一个文件,Windows不打包。

在安装时,不管是Windows还是安卓,面对大型软件都是比较慢的,甚至超过1分钟。比如安卓,会将1个G的单个apk复制到手机存储上,有的还需要预编译。不过这不是重点,我们关注的是卸载速度。

重点来了,为什么卸载时安卓几乎是“秒卸”,而Windows很慢?

刚说了,安卓安装时只有一个apk文件,卸载的时候删除这一个文件就可以了,一秒钟都用不了。当然有时也需要清理这个apk所产生的垃圾文件,不过按照安卓的惯例,数量都不多。

再看Windows,那文件就多了,一堆dll,一堆资源文件,还要对注册表进行逐一清理。

我们再看看为什么删除一个大型文件很快,哪怕是1个G甚至几十G都用不了1秒?这在安卓和Windows上都同样适用,删除单个文件都快。因为删除文件的时候并没有彻底把文件清零,而仅仅是把这个文件的占用区域做一个标记,标记为“已删除”。彻底删除大家在Windows上听说过,叫“粉碎”,一些第三方软件(360等)有这个功能。相反,如过删除的文件很多,则时间还是比较长的,积少成多嘛。因为标记为“已删除”也需要花一点时间的。而删除的时间长短主要取决于文件的个数,而不是文件的总大小。比如如果删除一个文件要1秒钟,那么3600个文件就要1小时(例子有点夸张)。安卓总共就一个文件,自然就快了。




“极客谈科技”,全新视角、全新思路,伴你遨游神奇的科技世界。

虽然电脑或手机的硬件性能具有一定的影响,主要还是系统上的差异。

  • 电脑普遍使用Windows系统,通过EXE文件的方式进行安装软件,卸载则相反执行;

  • 手机端安卓系统基于Linux系统,Linux系统使用树形结构,一般使用的是挂载式安装。

两种系统之间的差异,才是导致卸载软件时间上存在差距的主要原因!


Windows系统安装文件方式

电脑安装软件一般是下载应用程序的EXE文件,并且双击EXE文件实现安装。

  • 安装程序按照已经排列好的结构和目录解压实现文件的安装;

  • 并将文件的信息写入到系统的注册表,注册表是程序能否正常使用重要的一环。

注册表相当系统的一个数据库,记录了系统以及用户的大量信息;

当Windows系统想要删除应用程序时,同样要先删除注册表中涉及该程序的所有信息,然后才能删除文件目录下的内容,注册表较为复杂,势必会影响删除效率。


Linux系统安装文件的方式

手机基于Linux系统开发而来,这里仅仅阐述Linux系统。

  • Linux系统与Windows系统不同,使用树形结构,并未Windows的目录式结构;

  • Linux系统安装文件与Windows系统也不同,通过挂载的方式进行安装。

将需要应用程序挂载至某个目录下即可,删除时仅需要断开挂载删除应用程序文件件,效率远远高于Windows系统;Linux系统无论是在执行效率或至硬件资源的占用上均要优于Windows系统;至于安卓系统效率低于苹果iOS系统,主要是因为安卓系统引进虚拟机机制,完成人机交换之间的交互。


关于电脑与手机之间卸载软件之间的差异,您怎么看?

欢迎大家留言讨论,喜欢的点点关注。





手机卸载看似两三秒就把很大的游戏比如王者吃鸡游戏卸载了,看着快是因为手机安装的软件是有一个安装包和安装包解压后的一些可执行文件以及一大堆媒体数据,卸载时只要把这些对应的文件在文件系统内的的索引节点进行擦除就可以了,不需要真的对闪存进行大量的擦写,安装时才需要对闪存进行大量擦写,所以手机是安装慢卸载快。

而电脑Windows下不管是安装还是卸载都挺慢的,安装游戏的话,进度条更是慢的出奇,总是在进行各种文件抽取操作,而且且CPU占用都不到10%。

卸载时更奇怪有的软件卸载时用的时间比安装还要多,一般像p2p加速器捆绑下载下来自动安装的流氓软件就是这模样的,在卸载这种软件时确实会慢点,但主要的是用软件自带的卸载程序时在卸载完成时还会有和各种提示说要不要保留数据,留下宝贵意见什么的。

要是一直不去处理这个弹框,这个程序就一直处于正在卸载状态,尤其是用安全管理软件批量卸载时,总是处于卸载中,除非手动把弹框掉掉才算卸载完成。




其实手机也不是一瞬间就完成的!苹果手机为例,刺激战场现在闪存占用大约2.5G,在桌面按压之后删除,之后你迅速打开设置,进入储存查看,你会发现这2.5G左右的空间大约要等5-8秒才能恢复。可见手机在后台执行删除任务。把动画做成秒删是为了提升用户体验,毕竟好几秒钟可以干点别的。但window并没有这样的需求,电脑屏幕大的多,多窗口是基本操作,所以一直真实表现。其实安卓早期也和window一样,但随着软件越来越大,在4.4和5.0时代因为安装卸载慢饱受诟病,所以后来才改成苹果一样!




要解释为什么卸载速度不同,就需要从了解安装开始。

windows 软件安装过程

典型的 windows 软件安装过程可能做下面这些事情:

  1. 文件从安装源位置拷贝到目标位置。这是所有的软件安装过程的必需步骤。如果一个软件的安装只要这一步,不需要后面的其他几步,就可以认为它是绿色软件。也就是说,所谓绿色软件就是只要拷贝文件,就可以随处使用的软件。
  2. 往系统目录写入一些必要的动态连接库(DLL)。部分软件在安装时需要这个步骤。一些软件,需要用到软件作者开发的DLL,或者系统中不常用的DLL,则会随软件的安装拷贝到系统目录。所谓系统目录,在WIN98下一般是在WINDOWSSYSTEM这个目录,而WIN2K是在WINNTSYSTEM32,WINXP是在WINDOWSSYSTEM32。还有,一些软件如QQ游戏,中游等,它们也用到一些DLL,由于这些DLL只是这个软件自己用到,别的其他软件不会用到,所以它们并不一定存在于系统目录,而是放在软件安装目录里面。
  3. 往系统注册表中写入相应的设置项。大部分软件的安装需要这个步骤。安装前用户的设置,此时就会写入注册表。一些DLL需要向系统注册,这些DLL的注册信息也会写在注册表里。
  4. 建立开始菜单里的程序组和桌面快捷方式。快捷方式只是为了方便用户访问应用程序,不是必需步骤。
  5. 其他动作。有些软件安装时会先把安装文件先解压到临时目录,安装完之后就要把临时文件删除掉。

安卓 app 安装过程

  1. 将apk复制到data/app目录下面,会放到data/app/包名/目录下面,同时apk中的so文件也会拷贝到此目录下的lib文件目录中。
  2. 解压apk,把其中的classes.dex 拷贝到data/dalvik-cache, 其命名规则是 apk路径+classes.dex
  3. 在data/data/目录下创建对应的包名目录,data/data/包名/,并在该目录下创建存储应用数据的相关目录,例如cache, database、lib、shared_perfs等

卸载速度为什么差距这么大

首先,windows 软件的安装目录下是一大波的小文件,而安卓应用通常就是一个 apk 文件,删除速度差距明显。

其次,windows 软件卸载还需要清理注册表,这是一个比较耗时的动作,而且有可能存在清理不彻底的情况,所以电脑会越来越慢,注册表垃圾功不可没。

再次,windows 软件卸载还有可能需要清理动态链接库dll文件,也是一个相对耗时的工作。


最后,有些朋友也提到了,安卓为了优化用户体验,卸载应用时会首先把图标删除掉,真正删除文件的动作还会在后台执行一段时间。这也是大家感觉安卓应用秒卸载的原因。




手机上应用安装好后仍然是一个apk文件,只是会添加一些配置文件及数据文件,不像电脑会解压出很多文件,所以卸载手机应用时要删除的文件的数量相对较少。

无论是电脑还是手机,删除文件的速度都是很快的,电脑上如果只是单纯删除文件的话几个g的文件也是瞬间删除,这是因为对文件的删除都是标记性删除,也就是硬盘上做个记号,标记这个文件已经被删除了,新的文件可以使用这块地了,并没有真正的从硬盘上删除,这就是为什么文件删除后,只要这块区域还没被写入新的文件就还能找回的原因。

卸载手机app时,主要的工作就是删除文件,尽管后台删除文件不是一瞬间完成(看起来瞬间就完成,其实后台还在进行删除操作),但相比电脑而言还是快很多,而电脑中的卸载还要修改很多配置信息以及注册表等,再加上文件多,所以就很慢了。




电脑缷载几个G的软件和游戏也是一会的事阿!

如果缷载很久的话,第一是电脑性能不足。第二有些软件要慢慢卸,慢慢删,软件中一些文件驱动之类覆盖多个分区,特别是C盘,保证电脑不会删错什么东西。还要连根拨起来删!




Windows下打开git bash,rm -rf 安装的文件夹,快是快,不要乱用,否则后果很严重,血的教训。




这个问题涉及手机应用和计算机软件两个定义,接下来就是科普了。让我们从答案开始。手机软件本身的设计决定了删除应用的时间比从电脑卸载软件的时间要快。具体原因见下文分析:


1.移动应用

安卓操作系统是专门为智能手机和平板设计的一种操作系统,不支持整个标准库。Linux端软件很难移植到手机上。你可以简单理解为手机系统是精简优化的,与电脑系统明显不同。目前大部分手机应用都属于生活娱乐应用,其复杂度低于电脑软件。


2.计算机软件

对于软件,我们以Windows为例。Windows计算机有一个特殊的地方:它被称为注册表,记录软件的信息。windows文件夹中有很多dll的动态文件,是计算机软件正常运行的必要设置。当我们想要删除某个软件时,直接删除文件夹是不可能完全删除的。并且这个软件的信息也存储在注册表和Windows文件夹下。计算机系统是一个完整的标准库。一般来说,电脑软件的种类和功能比手机更强大。

3.卸载操作

说了手机应用和电脑软件的区别,我们来讨论一下为什么手机卸载应用比电脑快?

首先,卸载是一个删除应用程序或软件的过程。包括删除自己的应用程序文件和用户数据。由于系统原因,手机应用需要删除的地方很少。另一方面,看电脑的时候,不仅要删除自己的文件和数据,还要找出注册表和动态文件dll,一个一个删除。简单来说,电脑删除软件比手机多几个步骤。

其次,手机软件的卸载不是我们看到的,是瞬间完成的。其实这是手机为了优化用户体验而做的设计。准确的说,当你把应用拖进垃圾桶的时候,看到的是只执行一次图标删除操作,后续的删除工作转移到后台,看不到手机继续删除文件。所以你很快看到的其实是一种错觉。




手机删除快是直接把图标删除了,哪怕某个应用有几十个G的数据,也显得是瞬间删除了。其实是在后台慢慢删除所有文件,不显示删除过程。

而电脑要经过好几步确认,并且完整显示删除过程,显得很慢。

快与慢的本质是操作系统交互显示方式的不同,而不是什么文件系统、是否绿色安装等因素。其他答案都是在扯淡。

展开阅读全文

页面更新:2024-02-29

标签:瞬间   时间   电脑   手机   软件   注册表   应用程序   操作   方式   文件   目录   程序   数据   用户   系统   科技

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top