免费注册 查看新帖 |

ChinaUnix.net

  平台 论坛 博客 文库
1234下一页
最近访问板块 发新帖
查看: 19424 | 回复: 37

Android手机越用越卡,谁惹的祸? [复制链接]

论坛徽章:
16
处女座
日期:2014-07-18 14:50:542017金鸡报晓
日期:2017-02-08 10:33:212017金鸡报晓
日期:2017-01-10 15:13:2915-16赛季CBA联赛之深圳
日期:2016-12-15 17:55:53C
日期:2016-10-25 16:00:1515-16赛季CBA联赛之新疆
日期:2016-07-21 14:02:0415-16赛季CBA联赛之江苏
日期:2016-06-30 12:15:04shanzhi
日期:2016-06-17 17:59:31平安夜徽章
日期:2015-12-26 00:06:30综合交流区版块每日发帖之星
日期:2015-10-10 06:20:00IT运维版块每日发帖之星
日期:2015-09-01 06:20:002015七夕节徽章
日期:2015-08-21 11:06:17
发表于 2015-12-03 00:07 |显示全部楼层
获奖名单已公布:http://bbs.chinaunix.net/thread-4233387-1-1.html

话题背景
      根据2014年的调查显示,截止到2014年11月底,全球安卓手机用户约7.5亿,全球每天要扫除掉清理垃圾300万GB的垃圾,相当于装满18万部16G手机,堆起来约2.7万米高,这个高度相当于约31座珠穆朗玛峰。而在全世界用户里,最爱清理垃圾的第一名是中国用户,为什么呢?因为中国人的手机经常卡的不行了。
      Android手机越用越卡这句话现在几乎已经深入人心了。对待这个问题,大部分厂商在对后台管理进行优化的同时还会增大手机内存容量,以达到流畅的最终目的。vivo表示未来的X系列手机将标配4GB内存,因为只有大内存才是操作流畅的基础。标配大内存是好事儿,不过Android手机的卡顿并不是一味的增加内存就能解决了,CPU性能和闪存的性能也直接关乎到运行的流畅与否,只有面面俱到才能解决Android的顽疾。安卓手机为什么总是卡?是Android系统的原因吗,还是Java虚拟机消耗太多资源了吗?还是APP导致的?欢迎大家畅所欲言。



讨论话题
1、我们都知道Android APP主流开发语言是Java。在开发APP时,利用哪些Java的语言特性,采取什么措施可以提高程序的运行效率?        
2、你对Java语言的看法,大胆预测未来Java语言的发展趋势和方向。
3、你使用Java语言开发过Android APP吗?分享你在Java语言学习和Android APP开发的经验。



讨论时间
2015-12-03至2016-01-03



活动奖励
活动结束后将选取4名讨论精彩的童鞋,每人赠送一本《Java技术手册(第6版)》图书一本作为奖励。



奖品简介
zcover.jpg
作者: (英) Benjamin J. Evans    (美) David Flanagan   
译者: 安道
出版社:人民邮电出版社
出版日期:2015 年11月
开本:16开
页码:329
版次:1-1



内容简介
《Java技术手册 第6版》为《Java 技术手册》的升级版,涵盖全新的Java 7 和Java 8。第1部分介绍Java 编程语言和Java 平台,主要内容有Java 环境、Java 基本句法、Java 面向对象编程、Java 类型系统、Java的面向对象设计、Java 实现内存管理和并发编程的方式。第2部分通过大量示例来阐述如何在Java 环境中完成实际的编程任务,主要内容有编程和文档约定,使用Java 集合和数组,处理常见的数据格式,处理文件和I/O,类加载、反射和方法句柄,Nashorn,以及平台工具和配置。



试读样章
第一章:Java环境介绍.doc (52.5 KB, 下载次数: 19)

论坛徽章:
380
CU十二周年纪念徽章
日期:2014-01-04 22:46:58CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-03-13 15:38:15CU大牛徽章
日期:2013-03-13 15:38:52CU大牛徽章
日期:2013-03-14 14:08:55CU大牛徽章
日期:2013-04-17 11:17:19CU大牛徽章
日期:2013-04-17 11:17:32CU大牛徽章
日期:2013-04-17 11:17:37CU大牛徽章
日期:2013-04-17 11:17:42CU大牛徽章
日期:2013-04-17 11:17:47CU大牛徽章
日期:2013-04-17 11:17:52CU大牛徽章
日期:2013-04-17 11:17:56
发表于 2015-12-03 10:00 |显示全部楼层
沙发支持下。
我们都知道android是基于java的vm做的,这个本身就存在缺陷。
我觉得,android应该脱离java vm机制,利用Linux内核api来开发,这样就能利用linux的内存管理机制,效率能提高不少

论坛徽章:
132
操作系统版块每日发帖之星
日期:2016-05-11 17:06:57操作系统版块每日发帖之星
日期:2016-05-11 17:06:57数据库技术版块每日发帖之星
日期:2016-05-11 17:07:05操作系统版块每日发帖之星
日期:2016-05-11 17:06:57操作系统版块每日发帖之星
日期:2016-05-11 17:06:57综合交流区版块每日发帖之星
日期:2016-05-11 17:07:052022北京冬奥会纪念版徽章
日期:2015-08-07 17:10:57IT运维版块每日发帖之星
日期:2016-05-11 17:06:49操作系统版块每日发帖之星
日期:2016-05-11 17:06:57综合交流区版块每日发帖之星
日期:2016-05-11 17:07:05操作系统版块每日发帖之星
日期:2016-05-11 17:06:57程序设计版块每日发帖之星
日期:2016-05-11 17:06:57
发表于 2015-12-03 10:04 来自手机 |显示全部楼层
bbbbvvv
app太流氓了

论坛徽章:
58
技术图书徽章
日期:2018-09-11 14:06:54技术图书徽章
日期:2018-09-11 14:05:06技术图书徽章
日期:2018-09-11 14:04:50技术图书徽章
日期:2018-09-11 14:04:43技术图书徽章
日期:2018-09-11 14:04:31技术图书徽章
日期:2018-09-11 14:04:23技术图书徽章
日期:2018-09-11 14:04:16技术图书徽章
日期:2018-09-11 14:04:07技术图书徽章
日期:2018-09-11 14:03:47技术图书徽章
日期:2018-09-11 14:05:14技术图书徽章
日期:2018-09-11 14:05:21技术图书徽章
日期:2018-09-11 14:05:28
发表于 2015-12-03 10:08 |显示全部楼层
本帖最后由 baopbird2005 于 2015-12-09 15:18 编辑

1、我们都知道Android APP主流开发语言是Java。在开发APP时,利用哪些Java的语言特性,采取什么措施可以提高程序的运行效率?
   java的封装和对内存操作的隐藏,面向对象的开发方式,多线程处理,都是经常使用的功能。
   1.如果程序中使用到循环的话,循环体中使用的对象最好在循环体外就定义好,避免重复定义。2.不要太依赖java的GC机制,在跳出变量的作用范围外,手动回收内存。将变量置为null。3.生成对象时,要分配给它合理的空间和大小 比如list,默认是size为10,当你程序中使用的空间大小大于10个时,尽量给它定义一个合适的初始化空间。4.对于程序中经常使用但是又不常变化的对象或者数据,可以使用缓存。但是也不要为了使用缓存而用缓存      
2、你对Java语言的看法,大胆预测未来Java语言的发展趋势和方向。

        java语言拥有大量的开发人员和大量的借鉴代码,使得开发的门槛很低,很容易上手。java的未来应该还是很不错的,不仅仅是现在的Android智能手机,在Android没有使用之前就有大规模的java用户了。java的兴起还是由于本身语言的优势存在。java未来可能要多性能和效率多多的优化

3、你使用Java语言开发过Android APP吗?分享你在Java语言学习和Android APP开发的经验。
   目前所从事的工作就是Android app开发。对于需要硬件的支持的app应用,有时候是有点无语的,Android的机型和系统有很多很多种,有时候会出现不同机型的问题。让开发者很头疼。
   java语言并没有系统的去学习,接触到这样的工作才开始边学边练,在实践中学习和总结,我倒感觉这样挺快的。虽然深入了解可能需要一段时间,但是对于要求不是很高的应用开发来说足够了。


以上观点仅仅个人愚见,欢迎大牛拍砖

论坛徽章:
2
IT运维版块每日发帖之星
日期:2015-10-05 06:20:00操作系统版块每日发帖之星
日期:2015-10-05 06:20:00
发表于 2015-12-03 10:10 |显示全部楼层
本帖最后由 zero-B 于 2015-12-03 10:48 编辑

占位 +1,不过是现在编辑

作为安卓的忠实用户,我还真注意过这个问题。

1、首先说说安卓系统本身。我们都知道安卓系统衍生自 Linux,但是它并没有继承好 linux 的内存管理机制,在安卓手机 “RAM管理器” 页面还简要的介绍了安卓的“低内存管理(LMK)技术”,但是也只是说 “当内存不足时,低内存管理(LMK)通过清除最近使用最少(LRU)列表自动释放内存”,但是也没有说明这一过程是自动的?定时的?还是手动的?反正我都是手动清理。也许 google 是想让软件们都有一个守护进程在内存中常驻,以提高软件下次的打开速度,但个人认为恰恰是这个功能,从根本上拖慢了手机的运行。根据著名的28定律结合手机的常驻后台,我们也可以得出这样一个结论:80%的常驻后台实际能用上的时间不足20% !!

2、再来说说APP。也许和IOS的专制不同,安卓的APP开发者们都或多或少遵循着 GPL 协议在开发 APP,但是国内一个现实的问题就是,APP 开发者们不是大神,也需要吃饭需要生存,有时候不得不在软件里加入一点点的广告来期待获得广告收入,不用说,这个广告本身也就是常驻在内存中的,这个是原因一。原因二,APP 在开发的时候估计就没打算让它在 “退出” 程序的时候做到真正的 “退出”,好一些的是把主程序关掉,差一点的就直接转为后台运行,这样内存都能够用就奇怪了。

3、各种不 ROOT 就无法禁止的自动启动。不 ROOT,一堆的自启,ROOT,传说不质保。中国的小伙伴们各种纠结……

4、各种版本的 “个性化”。目前我使用过的安卓手机有3个品牌,HTC,三星,华为。个人认为HTC是最死板的,ROOT 成功率不算高,各种预装删不掉;三星相对较好,运营商预装的可以删除,厂商的软件也可以删除部分,但是无法管理软件自启和隐私问题;华为目前除了设计为方便左手使用不太习惯外,它的设计是最人性化的,在不 ROOT 的前提下可以删除部分软件,可以管理程序自启,可以管理程序隐私问题。不打广告,点到为止。其他的各种小厂的安卓。。。呵呵。。。。

论坛徽章:
30
CU大牛徽章
日期:2013-05-20 10:45:13数据库技术版块每日发帖之星
日期:2015-09-07 06:20:00每日论坛发贴之星
日期:2015-09-07 06:20:00每日论坛发贴之星
日期:2015-09-07 06:20:00数据库技术版块每日发帖之星
日期:2015-12-13 06:20:0015-16赛季CBA联赛之江苏
日期:2016-03-03 11:56:13IT运维版块每日发帖之星
日期:2016-03-06 06:20:00fulanqi
日期:2016-06-17 17:54:25IT运维版块每日发帖之星
日期:2016-07-23 06:20:0015-16赛季CBA联赛之佛山
日期:2016-08-11 18:06:41JAVA
日期:2016-10-25 16:09:072017金鸡报晓
日期:2017-01-10 15:13:29
发表于 2015-12-03 10:23 |显示全部楼层
本帖最后由 jieforest 于 2015-12-07 17:45 编辑

这问题非常好,我对目前整个Android生态环境的乌烟瘴气极不满意。随后作答。


1、我们都知道Android APP主流开发语言是Java。在开发APP时,利用哪些Java的语言特性,采取什么措施可以提高程序的运行效率?
我对提高应用程序的运行效率,通常是这么做的:
1)监控Java应用程序的运行情况
用jconsole连接到运行中的应用程序,查看其内存、线程、类、虚拟机的使用情况,查看是否有异常的地方。
比如对于虚拟机的情况,可以查看堆内存、非堆内存、内存池的状况总体内存的分配和使用情况以及不同的GC进行垃圾回收的次数和时间。
2)主观判断
自己开发的应用,多做测试,多试用,很多情况自己都能摸清楚。
3)使用JProfiler、GC Viewer、VisualVM之类的工具
这些工具非常专业(当然,掌握也不容易),可以对应用程序的运行情况做比较全面的侦测,有问题大多数都能暴露出来。

2、你对Java语言的看法,大胆预测未来Java语言的发展趋势和方向。
未来Java语言的方向我是这么看的:
1)模块化
也就是目前的Jigsaw项目,在Java 9会实现模块化,可能还不完全,完全的模块化未来必将实现。
2)函数式编程
Java 8初步引入了函数式编程思想,比如Lambda表达式,但这只是初步。更进一步的函数式编程相信会继续,有些内容可以借鉴Scala编程的思想。
3)并行编程
类似于Erlang、Golang之类的并行编程语言,虽然Java社区也有Akka库,但是未来并行编程的规范相信会纳入标准Java库中,作为JDK的一部分。

3、你使用Java语言开发过Android APP吗?分享你在Java语言学习和Android APP开发的经验。
我主要是做Java开发的,Android开发也做过一段时间,主要是项目需要。Android开发我不算高手,但仍然可以谈一些。
开发Android,离不开对Java SE的掌握,这是基础,尽量做到精通。
根据项目需要,可能会有本地移动应用和跨平台移动应用的选择。本地应用显然就是使用Android SDK进行开发;而跨平台应用则是利用Web技术,做几种移动平台的通用性开发。
对于跨平台移动应用,就有很多框架可供选择了。像以前的PhoneGap、Sencha Touch、jQuery Mobile等,到目前的React之类的框架,需要根据自己的需求进行选择。
对于跨平台移动应用,精通Web技术是少不了的,JavaScript、CSS、HTML等是基本功。
最终还是汇成一句话,多做项目,多看书,在开发实践中提高自己。

论坛徽章:
13
午马
日期:2015-01-19 14:08:552017金鸡报晓
日期:2017-01-10 15:13:29黑曼巴
日期:2016-11-07 11:24:56PHP
日期:2016-10-25 16:06:46黄金圣斗士
日期:2015-11-24 10:43:13IT运维版块每日发帖之星
日期:2015-09-25 06:20:00IT运维版块每日发帖之星
日期:2015-09-14 06:20:002015亚冠之阿尔纳斯尔
日期:2015-07-27 11:17:582015亚冠之广州恒大
日期:2015-07-24 15:04:162015年亚洲杯之乌兹别克斯坦
日期:2015-04-01 13:28:012015年辞旧岁徽章
日期:2015-03-03 16:54:15处女座
日期:2015-01-22 16:09:16
发表于 2015-12-03 10:26 |显示全部楼层
4L怎么搞的那么多圣斗士徽章

论坛徽章:
2
数据库技术版块每日发帖之星
日期:2015-09-12 06:20:00IT运维版块每日发帖之星
日期:2015-09-21 06:20:00
发表于 2015-12-03 10:29 |显示全部楼层
1、我们都知道Android APP主流开发语言是Java。在开发APP时,利用哪些Java的语言特性,采取什么措施可以提高程序的运行效率?  

尽量指定类的final修饰符带有final修饰符的类是不可派生的;尽量重用对象;尽量使用局部变量,调用方法时传递的参数以及在调用中创建的临时变量都保存在栈(Stack)中;不要重复初始化变量   默认情况下,调用类的构造函数时, Java会把变量初始化成确定的值;在JAVA + ORACLE 的应用系统开发中,java中内嵌的SQL语句尽量使用大写的形式,以减轻ORACLE解析器的解析负担;Java 编程过程中,进行数据库连接、I/O流操作时务必小心,在使用完毕后,即使关闭以释放资源;在使用同步机制时,应尽量使用方法同步代替代码块同步。

2、你对Java语言的看法,大胆预测未来Java语言的发展趋势和方向。
我觉得JAVA语言的发展到目前已经发展到了一个空前壮观的局面,但是由于科技的发展和JAVA语言的本身一些局限性,JAVA的发展必定会被其他的高级语言所代替。但是在未来的几年里,随着JAVA语言的一些规范的提出,JAVA仍就是主流的WEB和安卓的开发语言,但是现在学JAVA的人太多了,市场略显供过于求。


3、你使用Java语言开发过Android APP吗?分享你在Java语言学习和Android APP开发的经验。
这个当然,作为一个高级工程师,我写的JAVA代码可绕地球三圈,写代码最重要的就是代码的组织架构要好,好的结构会增加代码的健壮性和可扩展性,同时也能减少空间复杂度和时间复杂度。还有一点就是,效率很重要,写的多了也就写的块了,代码量是硬性条件,没有代码量,谈什么都是虚的。

论坛徽章:
211
2022北京冬奥会纪念版徽章
日期:2015-08-10 16:30:322015亚冠之全北现代
日期:2016-05-11 17:05:27操作系统版块每日发帖之星
日期:2016-05-10 19:23:04操作系统版块每日发帖之星
日期:2016-05-10 19:23:04操作系统版块每日发帖之星
日期:2016-05-10 19:23:04操作系统版块每日发帖之星
日期:2016-05-10 19:23:04操作系统版块每日发帖之星
日期:2016-05-10 19:22:58数据库技术版块每日发帖之星
日期:2016-05-10 19:23:04数据库技术版块每日发帖之星
日期:2016-05-10 19:23:04操作系统版块每日发帖之星
日期:2016-05-10 19:22:58操作系统版块每日发帖之星
日期:2016-05-10 19:22:58操作系统版块每日发帖之星
日期:2016-05-10 19:22:58
发表于 2015-12-03 10:33 |显示全部楼层
第一最寂寞i 发表于 2015-12-03 10:29
1、我们都知道Android APP主流开发语言是Java。在开发APP时,利用哪些Java的语言特性,采取什么措施可以提高 ...



可以分享一下,哪家发布的哪个app,谢谢

论坛徽章:
2
数据库技术版块每日发帖之星
日期:2015-09-12 06:20:00IT运维版块每日发帖之星
日期:2015-09-21 06:20:00
发表于 2015-12-03 10:40 |显示全部楼层
回复 9# action08
不要在意这些细节


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

ITPUB技术栈

ITPUB技术栈是ITPUB企业打造的垂直于IT领域的知识社群平台,在这里,你既可以是创作者也可以是消费者。如果你的IT生涯丰富多彩,喷薄的个人价值尽可在小栈内体现;如果你渴望找到志同道合的伙伴,拓宽人脉,小栈比跑会场更快。 小栈特色:
1.极高的用户转化率,实现更直接的知识变现;
2.随时随地,刷个朋友圈的时间,实现更长效的信息沉淀;
3.戳痛、难点的专业咨询,更接近成功解决方案的时刻;
4.贴近意见领袖,个人高速成长,迈入更富有价值的人际圈。

----------------------------------------

技术小栈>>
  

北京盛拓优讯信息技术有限公司. 版权所有 16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122
中国互联网协会会员  联系我们:huangweiwei@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP