怎么如何才能避免沉溺网络Android机卡顿

Android手机为什么会卡?有什么方法预防或解决卡顿?看完你就懂
Android手机为什么会卡?有什么方法预防或解决卡顿?看完你就懂
好看新视角
Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发那么你知道安卓手机卡顿卡顿原因及解决方法么?安卓机卡顿的原因:  一、安卓系统本身太过于开放  它是开放的系统,频繁的安装与卸载必然会在手机内积累大量残留,这些手机底层的残留物并不会因为你把APP卸载了而自动删除,卸载APP没用的,一般用户也意识不到它的存在,久而久之越积越多。手机用久了,视频、微博、QQ这类APP必然会产生垃圾,使用最频繁,所以垃圾产生也多。如果不及时清理,产生大量垃圾也是正常现象。  二、软件开发者水平良莠不齐  APP开发者技术有高低,有的算法和优化做得很烂,导致应用在使用时产生大量不必要的垃圾文件占用ROM空间,各种毫无必要的后台自动启动和进程占用RAM。这又要说到安卓宽松的审核机制,使得这些不规范APP得以流向消费者。由于安卓用户没有良好的付费习惯,安卓程序基本只能靠植入广告来挣钱,所以很多APP拼命植入广告插件,双十一那天,小编手机一晚上竟然收到了26条由APP推送的通知消息。  三、不良软件厂商的无耻行径  强制在通知栏推送消息还算是轻的,更要命的是那些不良软件厂商的钓鱼推广。很多朋友可能在通知栏看到一条消息,就去点击它,但是只要你点击了里面变成软件下载了,而且连停止按钮都没有,根本停不下来。这些垃圾软件一旦安装了,无时无刻不在后台占用你的手机内存和存储空间。对于上面这些情况,我们该怎么办呢?  1、定期清理手机缓存  a、桌面--文件管理--文件清理,来清理所有应用软件的缓存垃圾文件;  b、借助应用软件自带的清除缓存功能。比如清除微信的缓存垃圾文件,进入微信--我--设置--通用--清理微信存储空间,就可以选择性删除各种文件。  c、借助三方软件清除缓存,比如猎豹清理大师。  2、关闭不用的软件后台进程  长按HOME键--再点击“小扫把”清理。或直接下拉通知栏--点击一键清理后台运行程序。  3、桌面尽量减少使用动态壁纸和过多小插件  一些具有实时刷新功能的小插件会一直在后台运行,不仅占据了宝贵的RAM,还会在后台偷偷跑流量并持续消耗电量;所以应尽量减少此类数据密集型应用的小插件。  4、在软件商店搜索下载安装应用程序  现在第三方等市场太复杂,有不少程序自带恶意插件,从而拖慢了速度,所以要想使自己的爱机保持良好的运行速度,关键还是保持良好的使用习惯,维护好自己的手机。  5、关闭自动启动软件程序  桌面--安全中心--权限隐私--自启动管理--进行相关设置。  6、少用动画效果:  Android设备大都内置了动画效果,我们可以通过设置提高手机运行速度  a、关闭动画:设置--常规--更多--开发者选项--分别点击窗口动画缩放、过渡动画缩放和动画程序时长缩放--关闭动画--即可;  b、打开强制进行GPU渲染:设置--常规--更多--开发者选项--打开强制进行GPU渲染;  c、设置后台进程控制:设置--常规--更多--开发者选项--后台进程限制--进行相关设置。  7、每天都开关机一次  重启手机可以关闭后台运行程序,清除系统产生的临时缓存垃圾(非软件),解决系统或者软件未知错误,用最简单的方法释放内存  8、及时更新手机固件版本  新版本在系统各方面都进行过优化,而且也更稳定。
本文仅代表作者观点,不代表百度立场。系作者授权百家号发表,未经许可不得转载。
好看新视角
百家号 最近更新:
简介: 每天精彩多一些,更新不停歇安卓手机为什么这么卡 虚拟机是最大元凶
目前只能手机的两大阵营就是苹果和安卓,在双方角逐中,苹果总是以高大上的形象出现,而安卓更多的时候是以平民的身份出现,为什么会有这样的现象呢?其实安卓手机相对于苹果手机而言其硬件配置并不差,甚至更好,而安卓旗舰机的手机也并不比苹果iphone低,造成这一认知的主要原因就是安卓机通常不如iphone运行流畅。
苹果手机采用万年不变的双核处理器和1G内存,运行却很流畅,而安卓机使用8核处理器和3G内存,却依然不如苹果手机流畅,这是为什么?高通、MTK、英伟达之类的芯片制造商不是整天宣称什么制程、架构 如何先进,什么一秒钟多少万多少亿次浮点运算,怎么还整天被iPhone用户嘲笑很卡很不爽?
关于Android系统存在卡顿和不流畅的问题,似乎是个千古谜案——即便到现在也还有很多Android用户坚持说他们新买的旗舰已如丝般柔 滑, 却真正在流畅的细微处比iOS差了一截。不过从古到今,试图解释Android卡顿的观点就有千百种,据说即便是采访Android内部开发工程师,他们 也说这是个说不清道不明的问题。这次我们就从相关Android卡顿的几个主流说法谈起,尝试从相对浅显的角度来理解这一问题。
都是Dalvik VM虚拟机惹的祸?
按照普通人对虚拟机的理解,就是平常一直在用Windows操作系统,想装个Mac OS玩玩又没钱买苹果咋办?——装个虚拟机。从这个角度来理解,不管是出于玩机还是开发、或考虑兼容性的问题,用过虚拟机的同学就知道,这东西的效率 和原生安装方式不在一个层面,不管是从驱动、资源利用等各角度来看都是如此。
Android的系统框架上,在最底层的Linux内核之上就跑了个虚拟机,在Android 4.4之前,这个虚拟机叫Dalvik VM。绝大部分Android应用就运转在Dalvik VM虚拟机之上——很多人,甚至是程序员认为,Android系统之所以不流畅和卡顿,罪魁祸首就是此虚拟机,想想我们平常应用层面虚拟机的运行效率就知 道了,再牛逼的硬件也抵不住软件这么坑啊。
早年的Android系统能有如此奇葩的框架和执行思路并不是因为Andy Rubin真的很二。Android选择这条路的原因是看中互联网上浩瀚的Java资源——Java应用可以运行在Android这种Linux内核的系 统上正是拜虚拟机所赐,对于一个当时的新生系统而言,想要尽早构建起应用生态,这是个捷径——也是Android现在拥有这么多应用资源的关键所在(虽然 苹果就没这么做)。
不过另有一个帮派的程序员表示,这个层面的虚拟机和我们平常自己在电脑上装的虚拟机根本不是一回事,它的执行效率并没有人们想象的不堪,实际使用中和直接调用底层基础函数也没差多少。
(NDK的也可是让Android应用不用跑在虚拟机上)
(NDK的也可是让Android应用不用跑在虚拟机上)
我们从谷歌后来的行动看到,情况好像没有这么简单。早在Android 2.3时期,谷歌就意识到Dalvik并非长久之计,就为Android引入了NDK——这是个真正的开发包,使用C/C++语言也可以为Android 开发应用,以这种方式开发的应用不会跑在虚拟机上。彼时的程序员认为,这是Android从应用层真正开始具备与iOS相抗衡实力的开始,但这种梦想很快 就被打破,一方面是让开发者放弃Java全面转向C/C++并不现实,而且后两者开发难度甚高,涉及内存操作甚至与设备驱动程序对话,对于Android 这种机器种类繁多的系统而言,开发者采用NDK很不现实(类似《极品飞车》这种大型3D游戏运行代码理应采用C++,所以这类游戏针对Android手机 的不同处理器甚至还有不同的版本)。
所以在Android 4.4时期,谷歌为之引入了一种新的ART虚拟机,用以替代Dalvik。ART的特点是相比Dalvik更为高效:Dalvik虚拟机在每次运行应用时 会将之编译为二进制机器代码,ART的改进之一就在于在应用安装的时候就将二进制代码编译完成(所以每个应用安装所占空间会更大),这叫预编译模式,而不 是等到每次运行应用才编译。
理论上听来,ART似乎的确较Dalvik效率更高些,谷歌自己说ART对比Dalvik速度平均提升幅度达到80%,不过各位已经在用 Android 4.4甚至5.0的小伙伴有这种体会吗?或许今后随着Android生态以及系统自身的完善,ART可以表现出更大的优势,起码现在我们没怎么看出来它对 系统流畅性体验改善有多大贡献。
另外,在系统框架层面,除了探讨虚拟机可能是拖垮Android流畅性的元凶之一这种说法,还有人也会谈到Linux这类宏内核在驱动方面的先天不足,这些或许都是阻碍Android有丝般流畅的要素,但是否还有其他原因呢?
硬件加速弱爆了
显示系统图形界面的时候,如果画图的工作都交给CPU完成,这效率是可想而知的,犹如你让一位精通数学的同学画图,多少他倒是能画,只是能不能 画好 很成问题。如果GPU,也就是专门的画图工作者能够协助这个过程,情况自是大不相同。虽说系统流畅性是个相当大的话题,但硬件加速是否做得好就成为其中的 重要因素。
完善如上所述的这个过程,几乎是贯穿Android 2.x早期,到最新的Android 5.1,甚至此后很长一段时间内,谷歌需要努力的方向。针对系统图片、网页等2D图形绘制,Android所用的是谷歌早在2005年就收购的 Skia(那时Android都还没出生,Chrome也采用Skia作为2D图形引擎)。
Skia原始版本的图形光栅处理完全基于CPU和软件运算,也就是说早期Android的2D图形绘制对GPU的利用率存在严重不足,相较iOS和Windows Phone这种在硬件加速领域有着很久积累的系统完全不是一个水平。
在Android的系统设置-调试选项中,有个“强制进行GPU渲染”选项,开启这个选项以后会发现某些应用的运行的确更流畅了,但有些则出现 了更 糟糕的使用体验。在Android 2.3时代,国外科技博客DorothyBrowse特别强制开启这种Skia GPU加速,尝试进行Webkit渲染(Chrome的渲染引擎)测试,结果发现相较CPU自己画图,所谓的GPU加速居然出现了反效果,可知当时的 Skia GPU加速在Android平台有多么不成熟。
在Android 3.0之前,这套系统都没有真正行之有效的图形加速方案(即便从初版开始,Android就在努力融合硬件加速),Android 3.0才实现窗口相对完整的硬件加速绘制。实际上,即便是到Android 4.1,谷歌大肆宣传的黄油计划,过渡动画帧率达到60fps,通过预判和缓冲来提升效率,其GPU加速支持也并不完整。谷歌自己的官方文档中就提到,并 不是所有2D图像操作的API都已经支持硬件加速。
不过总的说来,Android的GPU加速是朝着逐步完善的方向发展的,最新版相较过去已经有了很大程度的提升,从系统级应用和各类操作这些年 来流 畅度的明确提升就能感觉得到,即便这种提升在iOS和Windows Phone面前还是显得有些无力。可是来到第三方应用,这个问题又变得非常复杂。
第三方应用质量很悲剧
在宣称如“丝般顺滑”、甚至“赶超iOS”的Android 4.1问世以后,不说和iOS比实际如何,其系统级应用倒真的流畅了很多,可是第三方应用死性未改,该怎么卡还是怎么卡。这就是个相当复杂的问题了。
其一,在Android一步步向前的步伐中,API Level越高,GPU硬件加速也的确愈加完善,比如Android 5.1所用API Level 22。所谓的API Level,标识的是Android平台框架的API版本。这个API可以理解为Android所跑虚拟机针对应用开发而支持的功能,随着版本号的变化, 这些“功能”在发生着升级或转变。对Android的系统应用而言,采用最新的API是理所当然的,流畅性也保持在最佳状态。
但对第三方应用来说,采用最新的API,就意味着对旧版本系统的抛弃。比如微信应用更新,如果很任性地用上API Level 22,那么最新版的微信将只支持Android 5.1,人类可以忍受吗?所以微信迄今为止还在采用API Level 9,微博则为API Level 14。这种API的迭代,也是苹果为何高度追求系统一致性的重要原因。想想Android系统的碎片化问题,第三方应用要变得更高效,好像是个根本无法完 成的任务。
这还只是第三方应用开发的一环。其二,Android应用开发者的“随性”让Android应用的效率更加悲惨。比如说谷歌在应用开发的指导原则中提到,如果应用不够流畅,应该看看是否存在“过度渲染(OverDraw)”的问题,就是布局重叠、重复绘制。
要检查这个问题,有兴趣的同学可以一起来做这个实验。在Android系统设置的开发者选项中,选择“显示GPU过度绘制”,此时整个界面变得 花花 绿绿一片。这些色块所表达的是,无色透明状态为最佳,蓝色表示很好,绿色为不错,浅红色表示较差,深红色为过度绘制问题严重。类似Instagram等应 用的情况似乎挺好,而某博和Facebook过度渲染的问题就很严重。这只是Android应用开发中的一个例子,如此这般罔顾开发原则的状况那是数也数 不清的。在Android相对开放的应用世界中,这种情况是不会有警察去抓的,显然iOS全程把关App Store就不会这么悲剧。
其三,在天朝这样一个奇特的国度,开放的系统无疑为许多应用开发商提供了大好机会。很多应用当安装到你手机中,其行为习惯可能是你完全不知道了,而且可能实情会更令你震惊,这就是下面一个话题了。
内存居然还不够用?装越多APP手机越卡
相关Android装越多应用,手机越卡的解释非常多样,甚至包括对于固态存储原理的解释。或许这些都是原因所在,不过更关键的原因是这样 的:Android系统中有个叫做Receiver(接收器?)的东西,负责传递系统接收到的变化,就像是神经系统。比如说按下Power键锁屏,长按关 机,或者长按相机按键启动相机应用,或者插入,都是在Receiver接收到以后通知相应apk,后由程序给出响应。
应用本身就可以跟系统注册任何形式的Receiver,其较大的用处之一是通知系统启动某个程序。比如YouTube的Receiver在开机 时、 系统语言切换后、系统账户改变后这三种情况下自动启动YouTube应用本身——这是个比较常见的Receiver。而国内的诸多“异士”是如何写 Receiver的呢?
某些著名视频站APP在下面这些情况下都会启动,包含开机时、网络状况改变时(2G、3G与WiFi间切换)、安装其它App时、卸载其它 APP 时、用户唤醒机器时.。。对于用户而言,无论你怎么杀进程清内存,只要这些操作被触发,Receiver就会启动相应程序,话说连个WiFi、下个新应用 都要启动该应用,哪有透明度可言,真是独有社会主义特色。
此类国产APP相当多见,常见Receiver动作还有:耳机拔出或插入时、文件下载完成后、WiFi扫描SSID完成后,都启动程序,是不是 感觉 灰常神奇?它们的宗旨就是永远不会被你杀死,什么一键杀进程,分分钟给你活过来,除非彻底卸载它们,或禁用相应Reciever。在这种情况 下,Android系统对于内存容量的要求自然是非一般的。
所谓的内存回收机制此刻都已不值一提,何以iPhone 1GB内存流畅运行至今,而Android现如今已是3GB时代;这也是很多Android优化文章告诉用户,如果某应用一周不用就卸载的核心所在,环境使然。你听说过iOS优化让用户卸应用的吗?
碎片化问题让Android千疮百孔
碎片化问题让Android千疮百孔
可以说,除了Android本身的顽疾之外,导致上述绝大部分问题的根源就是Android的碎片化,无论是Android自身开放的态度让各 种高 配、低配的手机都在使用,还是手机制造商对Android进行的二次开发。要将硬件加速做好、规范第三方应用质量,在Android开放的理念下是几近不 可能完成的任务,且谷歌自己都难以收拾局面。
Android的开放和碎片化带来的问题还远不止上面这些,一个典型的例子是iOS和Windows Phone都具备了特别出色的信息推送机制,比如说QQ、微信接收消息,在iOS和Windows Phone中,应用本身不需要常驻后台,通过每台手机和推送服务器保持唯一连接,就能收到推送通知,无论对性能和功耗的节省都具备了极大的意义。
Android系统当然也具备了消息推送的可行性,但由于碎片化问题,以及国内因为某种原因不得不去掉谷歌服务的现状,令Android不同应 用采 用五花八门的推送机制。许多Android应用获取消息的方式是轮询(而非推送),即应用主动地与服务器连接并查询是否有新消息,可想而知它对系统和网络 资源的消耗。
关乎Android系统本身,则除了文首提到的虚拟机机制,还有许多相当微妙的问题形成它与iOS之间的流畅性差异,比如Android对多任 务的 支持更类似于桌面系统,本身就只有靠堆砌硬件才能满足这种多任务的需求,当然iOS的多任务也已经不像很多人理解的那样,是多年前的“假后台”了,它针对 第三方应用开放的多任务API正越来越多。
总之,Android的卡顿和不流畅是个极其复杂、庞大的问题,上面所提的这些也只是挖掘了其中的一部分。就Android系统的发展轨迹来 看,从 初代问世至今,其发展史都可以看做是谷歌在系统流畅性问题上所做的一次次努力,流畅性改善甚至是Android前行的一条线索,所以谷歌也才毫不吝啬地一 次次地宣传,我们的系统更流畅了,不管相较竞争对手有多大差距和多少不可控性,现在的Android也已经比过去流畅了很多,虽然未来还有很长的路要走。
以上文章转载自爱活网。
除非注明,聚尔文章均为原创,转载请标明转载自聚尔
经验板块汇聚了各领域高手的选购经验和总结,期望帮助网友们做出精明的购买决策。如果您也擅长某一领域并乐意分享,欢迎向我们投稿。但禁止发布商品广告相关文章推荐
这是大家的普遍体验:android用着用着就很卡,而且经常要许多不必要的清理操作
但是苹果手机,基本上不会产生如此问题,而且用几年都可以很流畅。
卡顿是人的一种视觉感受,比如我们滑动界面时,如果滑动不流程我们就会有卡顿的感觉,这种感觉我们需要有一个量化指标,在编程时如果开发的程序超过了这个指标我们认为其是卡顿的。。...
2015年伊始,Google发布了关于Android性能优化典范的专题,一共16个短视频,每个3-5分钟,帮助开发者创建更快更优秀的Android App。课程专题不仅仅介绍了Android系统中有关...
给定A, B两个整数,不使用除法和取模运算,求A/B的商和余数。
最基本的算法是,从小到大遍历:
for (i = 2 to A -1)
if (i * B > A)...
K-means聚类算法是一种非层次聚类算法,在最小误差的基础上将数据划分了特定的类,类间利用距离作为相似度指标,两个向量之间的距离越小,其相似度就越高。程序读取全国省市经纬度坐标,然后根据经纬度坐标进...
source insight是一款很好的c语言的程序编辑器,方便对project管理,方便程序的阅读和编辑。查找功能使用十分频繁,选项较多,与其它软件的查找功能也类似,下面对英文版的查找功能,做简单说...
--查询每个年级的总学时数,并按照升序排列。
SELECT SUM(ClassHour) AS 总学时,GradeId AS 年级 FROM Subject GROUP BY
首先我使用的是java自带的对webservice的支持包来编写的服务端和发布程序,代码如下。
webservice的接口代码:
package com.xxx.test.
import ja...
在ubuntu下面开放端口好像主要有两种方法,一种是ubuntu自带的防火墙,一种是iptables,这里我们主要使用iptables。本文的系统版本为ubuntu14.04和ubuntu16.04
instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例。instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。
他的最新文章
讲师:董晓杰
讲师:姚远
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)}

我要回帖

更多关于 怎样才能避免写错别字 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信