- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
Android开发优化之——从代码角度进行优化
通常我们写程序,都是在项目计划的压力下完成的,此时完成的代码可以完成具体业务
逻辑,但是性能不一定是最优化的。一般来说,优秀的程序员在写完代码之后都会不断的对
代码进行重构。重构的好处有很多,其中一点,就是对代码进行优化,提高软件的性能。下
面我们就从几个方面来了解Android开发过程中的代码优化。
1)静态变量引起内存泄露
在代码优化的过程中,我们需要对代码中的静态变量特别留意。静态变量是类相关的变
量,它的生命周期是从这个类被声明,到这个类彻底被垃圾回收器回收才会被销毁。所以,
一般情况下,静态变量从所在的类被使用开始就要一直占用着内存空间,直到程序退出。如
果不注意,静态变量引用了占用大量内存的资源,造成垃圾回收器无法对内存进行回收,就
可能造成内存的浪费。
先来看一段代码,这段代码定义了一个Activity。
1.privatestaticResourcesmResources;
2.
3.@Override
4.
5.protectedvoidonCreate(Bundlestate){
6.
7.super.onCreate(state);
8.
9.if(mResources==null){
10.
11.mResources=this.getResources();
12.
13.}
14.
15.}
16.
这段代码中有一个静态的Resources对象。代码片段mResources=this.getResources()
对Resources对象进行了初始化。这时Resources对象拥有了当前Activity对象的引用,
Activity又引用了整个页面中所有的对象。
如果当前的Activity被重新创建(比如横竖屏切换,默认情况下整个Activity会被重
新创建),由于Resources引用了第一次创建的Activity,就会导致第一次创建的Activity
不能被垃圾回收器回收,从而导致第一次创建的Activity中的所有对象都不能被回收。这
个时候,一部分内存就浪费掉了。
经验分享:
在实际项目中,我们经常会把一些对象的引用加入到集合中,如果这个集合
是静态的话,就需要特别注意了。当不需要某对象时,务必及时把它的引用从
集合中清理掉。或者可以为集合提供一种更新策略,及时更新整个集合,这样
可以保证集合的大小不超过某值,避免内存空间的浪费。
)使用Application的Context
在Android中,ApplicationContext的生命周期和应用的生命周期一样长,而不是取
决于某个Activity的生命周期。如果想保持一个长期生命的对象,并且这个对象需要一个
Context,就可以使用Application对象。可以通过调用Context.getApplicationContext()
方法或者Activity.getApplication()方法来获得Application对象。
依然拿上面的代码作为例子。可以将代码修改成下面的样子。
1.privatestaticResourcesmResources;
2.
3.@Override
4.
5.protectedvoidonCreate(Bundlestate){
6.
7.super.onCreate(state);
8.
9.if(mResources==null){
10.
11.//mResources=this.getResources();
12.
13.mResources=this.getApplication().getResources();
14.
15.}
16.
17.}
18.
在这里将this.getResources()修改为this.getApplication(
文档评论(0)