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

Grape242617723


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

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

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

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

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


Windows系统安装文件方式

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

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

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

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

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


Linux系统安装文件的方式

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

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

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

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


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

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



极客谈科技


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

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

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

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


闻一知二观隅反三


苹果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小时(例子有点夸张)。安卓总共就一个文件,自然就快了。


犍为真人


前面的朋友回答的很详细,

但我要补充一些同样原因和技术背景的不同表现,

和一些系统背后的开发思路分析。

不仅是这样,你可以还会注意到:

  • 手机安装一个App比卸载速度更快,无论iOS苹果还是Android安卓。

  • Windows电脑卸载软件的速度,比Mac/Linux电脑操作系统卸载软件的速度慢多了。

这背后的理由是类似的。


01

Linux/Unix/MacOS/iOS/Android的设计理念对安装/卸载的设计

对于Linux/Unix/MacOS/iOS/Android的所有版本——不管是电脑/手机/Pad/甚至是树莓派,安装和卸载程序或应用程序都非常快捷简单。

因为从这几个系统的设计上,基本上,就是将程序放在需要的位置,或者将其删除——最多告诉系统,我把这个东西放在这里了。

02

Windows系统的设计理念,比较复杂

Windows在这方面是独一无二的,实际上可以称其为缺陷,或Windows致命弱点。 Windows使用一种称为“注册表”的复杂管理模型,来把DLL动态链接库将程序文件和程序所需的资源捆绑在一起——比如,确定程序可以打开哪些文件等等。

简而言之…在Windows上安装程序涉及到进行条目和调整以及新文件和关联。

卸载实际上需要做更多的工作,因为自安装以来操作系统已建立了新的关联,需要逐个处理,并不是只需要删除文件。

03

但万事无绝对

从第一个版本开始,Android就被认为内置了快速删除应用——然后逐步清理存储。

相反,Windows具有悠久的历史,安装/卸载过程根本不是标准的——很多很灵活的实现方法。

甚至可以仅在复制exe文件的情况下在Windows上运行应用程序——对一些简单的程序应用。


三叉戟看科技


安卓卸载app绝不可能1秒删除,这是系统给你的“假象”。

安卓卸载APP后,图标立刻没有了,也没有卸载进图图,所以给人感觉一秒卸载完,实际上是在后台卸载,有些大程序依然要好久卸载,比如微信,缓存那么多,怎么可能那么快卸载完?

我试过在闪存是eMMC的手机上点卸载微信后迅速打开文档管理器,可用空间在慢慢变大,前后有1分钟左右才停下来,换闪存是UFS的手机后暂时还没试过,肯定快些,但也不可能秒删。

为什么系统给你这个假象?因为安卓基本都是手机在用,如果删除程序时跟电脑一样有进度条,那绝对影响用户体验!


夏羽时代


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


洋葱科技


很多朋友回答的很专业,在我看来其实是各系统卸载(包括安装)的机制。最烦心的是win系统只要不是绿色软件,那么软件会在系统各位置拷贝了很多东西,并且注册DLL,并且可能在系统进程中注入等等等等乱七八糟的一大坨东西在各位置东躲西藏。

如果需要卸载,那么先要从中止注入在系统进程中的线程,卸载注册的DLL,还有删除和还原注册表中的项,历史记录,临时文件等等等等,最后才删除软件本体和缓存文件(这个还不一定删)加上一些偷偷摸摸安装上的东西屏蔽等,加上很多软件不是删除文件夹,而是逐个文件删除,还特意保留了一些文件,加上win系统的文件管理天生不足(比如你打开一个有几千上个文件的文件夹,会很慢)所以卸载过程变得很慢。

而mac端大部分app都算是绿色软件,直接删除应用文件夹就可以了(他的应用就是个文件夹),当然如果深入删除,需要删除缓存文件夹。还可能存在一些配置文件,不删除也对系统没任何影响,也非常小,就是个文本文件。

而ios端更简单 因为沙箱的机制限制(mac也有,但是 mac可以允许突破沙箱,ios不允许),卸载过程只用杀死进程后,删除应用的文件,(它的东西都在这里)和系统数据库(类似win的注册表)中对应的项目(写入和山粗是系统自动配置,不允许人工配置 和注 册表不同,开发过程中无法在任意位置中写入数据)。安卓不太清楚 好像是一样的。

所以,目前几个主流系统中,除了win系统,都可以秒删 这个和安全机制有关,


V那个9


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


用户92805446502


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

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

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


负1楼


手机删除快是直接把图标删除了,显得一下子就删掉了,其实是在后台慢慢删除所有文件,不显示删除过程。

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

其他答案都是在扯淡。


分享到:


相關文章: