`
稻-草
  • 浏览: 62802 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

讨论:编写高效的Android代码

阅读更多
最近看了这篇文章,je上搜了下还好几篇博客。
编写高效的Android代码:http://lcs353732057.iteye.com/blog/458511

避免建立对象
使用本地方法
使用实类比接口好
用静态方法比虚方法好         // 难道要直接用面向过程的方法实现
不用getter和setter           // 封装性也不管了
将成员变量缓存到本地
避免使用枚举
....
避免使用浮点数               // 不精确也不管?


真的要这么斤斤计较吗? 个人认为真的没有必要,大家说呢
分享到:
评论
16 楼 kitcheng 2010-02-10  
还好偶以前是弄标准C开发服务端程序的,对这些比较敏感。
15 楼 wafj1984 2010-02-10  
如果代码经验丰富的话,不用说也能写出来
14 楼 wafj1984 2010-02-10  
仁者见仁,的事情
13 楼 RednaxelaFX 2010-01-08  
要是根据Dalvik的作者,Dan Bornstein的介绍,要快的话,在做大量循环的时候,连循环的方式也有讲究:用普通for循环,
for (int i = intitializer; i >= 0; i--) // 好,倒序遍历的for循环

int limit = calculateLimit();
for (int i = 0; i < limit; i++) // 好,循环条件中只有一个比较的顺序遍历

Type[] array = getArray();
for (Type e : array) // 还行。对数组的foreach

for (int i = 0; array.length; i++) // 还行。循环条件有对数组的length的访问

for (int i = 0; i < this.var; i++) // 嗯……循环条件有对成员变量的访问

for (int i = 0; i < obj.size(); i++) // 嗯……循环条件有对成员方法的调用

Iterable<Type> list = getList();
for (Type e : list) // 不好。对Iterable<E>的foreach,至少要创建一个Iterable的实现类的实例,而且循环条件有方法调用。


注意前提是“在做大量循环的时候”。不过这也够杯具的……
12 楼 BarryWei 2010-01-08  
晕死,感觉好像时光倒流,到了上个世纪去了。
完了那么久的OO,结果现在写android最好不写OO,想来真的滑稽。
呵呵。
11 楼 lordhong 2010-01-08  
目前写移动应用程序是anti-OO, 就是越不OO越好, static, public能用就用... getter/setter是大大的NO, 哈哈
10 楼 proper 2010-01-08  
稻-草 写道
最近看了这篇文章,je上搜了下还好几篇博客。


真的要这么斤斤计较吗? 个人认为真的没有必要,大家说呢


用不着这么斤斤计较,只要代码编写时把所有逻辑层面的错误都想到就行了,例如错误处理,逻辑流程等等.
性能是可以放到最最后面再看的.


只有一个例外,就是帧数要求比较高的游戏. 做这些Android游戏的话,这些建议都是要认真考虑的.
9 楼 topcloud 2010-01-07  
尽量少使用匿名类,同时也要尽量减少类的数量。
8 楼 fkpwolf 2010-01-07  
没那多条条框框吧,我记得的有一条是尽量把类放到一个java文件中,google io上面有专门讲性能问题的,youku上面搜搜看。

float多半是因为arm平台对这种指令支持不多,一般用double就足够了
7 楼 mercyblitz 2010-01-07  
我个人觉得,就是减少GC、多态、栈的大小所有带来的性能消耗。
6 楼 welcomyou 2010-01-06  
BarryWei 写道
稻-草 写道
最近看了这篇文章,je上搜了下还好几篇博客。
编写高效的Android代码:http://lcs353732057.iteye.com/blog/458511

避免建立对象
使用本地方法
使用实类比接口好
用静态方法比虚方法好         // 难道要直接用面向过程的方法实现
不用getter和setter           // 封装性也不管了
将成员变量缓存到本地
避免使用枚举
....
避免使用浮点数               // 不精确也不管?


真的要这么斤斤计较吗? 个人认为真的没有必要,大家说呢



Google的技术文档有一套"better not do"的事情,大概遵守那个标准就应该可以了。
何况,程序也不是一下子就要考虑那么多的申请。
我偏向于Martin大师的那种方法,凡是有功能完成就应该交付用户使用,其他的功能
在后期慢慢加上去。然后在反馈中在不断修改。
当然,android上面想做升级也不是那么容易的,毕竟要考虑用户的感受。
所以,我想还是退出一个beta版免费,然后在考虑以上的效率和规则,发放收费的pro版。


免费版那么慢,有几个还会买收费版。
5 楼 BarryWei 2010-01-06  
稻-草 写道
最近看了这篇文章,je上搜了下还好几篇博客。
编写高效的Android代码:http://lcs353732057.iteye.com/blog/458511

避免建立对象
使用本地方法
使用实类比接口好
用静态方法比虚方法好         // 难道要直接用面向过程的方法实现
不用getter和setter           // 封装性也不管了
将成员变量缓存到本地
避免使用枚举
....
避免使用浮点数               // 不精确也不管?


真的要这么斤斤计较吗? 个人认为真的没有必要,大家说呢



Google的技术文档有一套"better not do"的事情,大概遵守那个标准就应该可以了。
何况,程序也不是一下子就要考虑那么多的申请。
我偏向于Martin大师的那种方法,凡是有功能完成就应该交付用户使用,其他的功能
在后期慢慢加上去。然后在反馈中在不断修改。
当然,android上面想做升级也不是那么容易的,毕竟要考虑用户的感受。
所以,我想还是退出一个beta版免费,然后在考虑以上的效率和规则,发放收费的pro版。
4 楼 welcomyou 2010-01-06  
Android跑在G1上的速度实在是让我崩溃,感觉上还不如我的E61,看来需要更强悍的硬件支持,或者JVM需要更多的优化。Java刚出来的时候不也有类似恶心的Guide :)
3 楼 chandler 2010-01-06  
凡是一个度而已。
2 楼 Ahaooo 2010-01-05  
这种差异只有在大量的创建对象或调用时才会显现出来。创建几十个对象都不会有感觉,但有几百上千个对象时就能感觉到拖慢了,手机资源毕竟有限。
1 楼 syluke 2010-01-05  
跟应用有关,对性能要求高的,或者计算量大的,就完全有必要。毕竟只是1G以下的CPU,可比不得我们的PC。

相关推荐

    如何编写高效的ANDROID代码

    本文将基于提供的文件内容,深入探讨几个关键点,帮助开发者掌握编写高效Android代码的核心技巧。 #### 一、资源统计原则 在开始讨论具体的优化方法之前,我们需要明确一个基本原则:**资源统计原则**。这指的是在...

    android代码大全7

    《Android代码大全7》是针对Android开发的一份综合资源,涵盖了...通过《Android代码大全7》,开发者可以系统学习和实践Android开发的各个方面,不断提升自己的技术水平,构建高效、稳定、用户体验良好的Android应用。

    com.android.tools.build:gradle:3.2.0

    总之,`com.android.tools.build:gradle:3.2.0`是Android开发中的关键组件,它的存在使得构建过程更为高效和灵活。了解并掌握其特性,对于提升Android项目的构建效率和优化APK性能有着至关重要的作用。同时,通过...

    android源代码讲解以及导入

    通过正确导入源代码到Eclipse,配合详细的文档和讲解,开发者可以更好地理解Android的工作原理,从而编写出更高效、更稳定的应用程序。同时,这也为定制和优化Android系统提供了可能,无论是对于个人开发者还是企业...

    疯狂android讲义第二版配套源代码 第四章

    这章可能涵盖了Android应用程序开发的关键概念和技术,通过实际的代码示例帮助读者深入理解Android系统的运作机制以及如何编写高效的应用程序。下面将详细讨论可能包含的知识点: 1. **Activity生命周期**:在第四...

    Android-用Kotlin编写的android样板免费路由器概念

    Kotlin是Google推荐的Android开发语言,以其简洁、安全和易读性著称,使得开发者能够更高效地编写代码。 基于这些信息,我们可以深入讨论以下几个相关的Android和Kotlin知识点: 1. **Kotlin基础**:Kotlin的语法...

    深入理解Android+5源代码

    通过阅读《深入理解Android 5源代码》,开发者不仅可以深化对Android系统的理解,还能提升解决实际问题的能力,从而编写出更高效、更稳定、更安全的Android应用。对于想要在Android领域深造的工程师来说,这本书无疑...

    高效android http网络模块

    "高效Android HTTP网络模块"着重于提升网络访问的效率和稳定性,同时保持代码的可维护性和开源特性。在这个主题下,我们将深入探讨Android中实现高效HTTP网络访问的关键技术点。 首先,我们关注的是`http`协议。...

    Android系统源代码情景分析 第3版

    《Android系统源代码情景分析 第3版》是深入理解Android操作系统内核与应用程序开发的一本重要参考资料。本书针对Java开发者,详细解读了Android系统的各个方面,包括系统架构、进程管理、内存管理、图形系统、网络...

    《深入理解Android:卷一》 高清版

    3. **内存管理**:讲解了Android的内存分配策略、垃圾回收机制,以及如何避免内存泄漏和内存溢出,帮助开发者编写高效、稳定的代码。 4. **UI系统**:详细阐述了Android的视图体系结构,包括View和 ViewGroup的交互...

    Android开发从零开始课件源代码

    这个"Android开发从零开始课件源代码"的资源,旨在提供一个全面、系统的学习路径,帮助初学者逐步掌握Android应用开发的各项技能。下面我们将深入探讨其中可能涵盖的知识点。 1. **Android Studio入门**:作为...

    阿里Android开发手册.pdf

    3. Java代码:推崇良好的代码组织,避免过长的函数,合理使用final关键字,提高代码可读性。 三、性能优化 1. 内存优化:讲解如何避免内存泄漏,使用弱引用,合理管理Bitmap,防止OOM(Out Of Memory)错误。 2. ...

    android 数据库代码和资料

    接下来,我们将讨论如何在Android中执行SQL语句。你可以通过SQLiteOpenHelper的getWritableDatabase()或getReadableDatabase()方法获取到Database对象,然后使用其rawQuery()、execSQL()等方法来执行查询、插入、...

    Android:Android App源代码和构建文件(需要Android Studio)-Android app source code

    Android App源代码是开发者用于创建和修改应用程序的原始代码,这些代码通常由Java、Kotlin或C++等编程语言编写。构建文件则包含了编译和打包应用所需的各种配置和指令,确保应用程序能够正确构建并运行在Android...

    Android Jni代码示例讲解

    标题 "Android Jni代码示例讲解" 涉及到的是Android平台下Java Native Interface (JNI)的使用,这是一个让Java代码与本地(C/C++)代码交互的关键技术。JNI在Android开发中常用于优化性能,调用底层库,或者处理特定...

    Android代码-KickFlyBug2.zip

    开发者可以使用Java和Kotlin等编程语言来编写Android应用,并通过Android Studio这样的集成开发环境(IDE)进行开发。 现在,让我们聚焦于"KickFlyBug2"。由于没有提供具体的错误描述,我们可以根据常见的Android...

    android system

    - 讨论Android系统中电源管理的核心组件和技术细节,包括如何优化应用程序以提高电池续航能力。 #### 环境搭建详解 - **Android设备**:Nexus S是一款经典的Android设备,具有良好的性能和稳定性,非常适合用于...

    Android代码-英语单词记忆程序源码(2).zip

    【Android代码-英语单词记忆程序源码(2).zip】是一个包含了用于开发英语单词记忆应用的源代码资源的压缩包。这个程序可能采用了一些高效的记忆技巧,如艾宾浩斯遗忘曲线理论,来帮助用户更好地记住英语单词。下面将...

    android自动生成代码

    这样,开发者就不需要手动编写这些繁琐的代码。 接下来,我们讨论自动生成控件赋值代码。在布局文件中定义好UI元素后,通常需要在Java代码中为这些元素设置监听器、属性等。Android Studio的“Live Templates”功能...

Global site tag (gtag.js) - Google Analytics