本人从事java服务器端开发已经有6,7年了,最近这一年多转去做Android开发。到今天觉得应该把自己的一些感受写下来,供以后参考。

1. Java bean的定义

我们一般定义一个java bean,都是用如下的代码:

public class User {

private String name;

public void setName(String name) {

this.name = name;

}

public String getName() {

return this.name;

}

}

在Android开发中,我们一般这样定义一个java bean:

public class User {

public String name;

}

在Android的官方开发文档中这样说到:

In native languages like C++ it's common practice to use getters (i = getCount()) instead of accessing the field directly (i = mCount). This is an excellent habit for C++ and is often practiced in other object oriented languages like C# and Java, because the compiler can usually inline the access, and if you need to restrict or debug field access you can add the code at any time.         而对Android开发来说:

However, this is a bad idea on Android. Virtual method calls are expensive, much more so than instance field lookups. It's reasonable to follow common object-oriented programming practices and have getters and setters in the public interface, but within a class you should always access fields directly.

没有JIT的话,直接访问成员的速度是通过getter/setter访问速度是3倍。有JIT的话,这个数字是7倍。

2. 尽量少的创建临时对象,尽量使用基本类型

在服务器端开发的时候,我们很少会注意这个问题。但是在Android开发中,这些就是我们必须要留意。我个人认为我们在服务器端开发的时候,也可以应用这个原则。

因为Android内存受限,减少内存分配,就意味着减少不必要的垃圾回收,进而可以避免App在使用中出现停顿等现象。

比如说方法的返回值能用基本类型的表示的,就不要用一个java bean来表示;能用一个基本类型的数组表示的,就不要用一个java bean数组来表示。

3. 不要用反射,除非无路可走。

这个对App的性能是一个非常大的损耗。除非是为了App开发中为了OS不用版本的兼容性而使用反射。

4. 使用最小的空间来存储更多的数据

通过学习和使用,Android里面有一种非常高效的数据存储方式:

public void writeToParcel(Parcel dest, int flags) {

dest.writeLong(time);

int bat = (((int)cmd)&0xff)

| ((((int)batteryLevel)<<8)&0xff00)

| ((((int)batteryStatus)<<16)&0xf0000)

| ((((int)batteryHealth)<<20)&0xf00000)

| ((((int)batteryPlugType)<<24)&0xf000000);

dest.writeInt(bat);

}

Android用一个int存储了5个数据项。这段代码来自于Android 存储电池历史文件源代码。这段代码给我了很多的启示。当我们想把一些数据存储在文件中,就可以用这种方式:紧凑,快速。

最后一个是选择了一个新的IDE: Android Studio和Intellij Idea。用了新的IDE之后,开发效率确实提高了不不少,而且心情也愉悦了很多。

android bea拷贝,从Android开发中学到一些东西相关推荐

  1. android 拷贝list,Android开发实践:拷贝assets到sdcard

    我们知道,Android工程目录下有一个assets文件夹,它到底有什么作用呢? 网上关于assets文件夹与res/raw文件夹的区别的讨论挺多的,也没有一个统一官方的结论,到底何时用assets, ...

  2. 原生Android也能做Web开发了

    大家好,今天跟大家介绍一个让原生Android也可以做Web开发的开源项目--AndServer. 开源地址:github.com/yanzhenjie/- AndServer是一个Android端的 ...

  3. 深入浅出 - Android系统移植与平台开发(十)- Android编译系统与定制Android平台系统(瘋耔修改篇二)...

    第四章.Android编译系统与定制Android平台系统 4.1Android编译系统 Android的源码由几十万个文件构成,这些文件之间有的相互依赖,有的又相互独立,它们按功能或类型又被放到不同 ...

  4. 【Android 高性能音频】Oboe 开发流程 ( Oboe 音频帧简介 | AudioStreamCallback 中的数据帧说明 )

    文章目录 一.音频帧概念 二.AudioStreamCallback 中的音频数据帧说明 Oboe GitHub 主页 : GitHub/Oboe ① 简单使用 : Getting Started ② ...

  5. Android Studio1.4.x JNI开发基础 - 简单实例

    接上一篇,搭建好基于Android Studio的环境之后,编写native代码相对来说也比较简单了.在Android上编写Native代码和在Linux编写C/C++代码还是有区别,Native代码 ...

  6. 《ArcGIS Runtime SDK for Android开发笔记》——(5)、基于Android Studio构建ArcGIS Android开发环境(离线部署)...

    1.前言 在上一篇的内容里我们介绍了基于Android Studio构建ArcGIS Runtime SDK for Android开发环境的基本流程,流程中我们采用的是基于Gradle的构建方式,在 ...

  7. 连载 | Android之Camera1实现相机开发

    一.前言 现在很多app都会有拍照功能,一般调用系统进行拍照裁剪就能满足平时的需求,但有些场景或者特殊情况下如:持续不间断拍多张照片或者是进行人脸识别的时候,这时候之间调用系统原生相机拍照时不能满足自 ...

  8. Android从驱动到应用开发实例分析

    Android从驱动到应用开发实例分析 1. 第一个android应用程序 Android应用一般包含一个源代码目录src.一个资源目录res.一个配置文件AndroidManifest.xml.和一 ...

  9. Android Studio入门(安装--开发调试)

    写在前面的话:本文来源:http://blog.csdn.net/yanbober/article/details/45306483 目标:Android Studio新手–>下载安装配置–&g ...

最新文章

  1. mysql 常规命令操作_mysql数据库常规命令操作
  2. 在统一软件开发过程中使用UML
  3. 史上最全JS表单验证封装类
  4. python量化交易2019_2019 量化交易策略实盘总结和一些展望
  5. gulp不生成打包文件_命令行输入gulp 无法生成压缩文件
  6. 蓝桥杯 ADV-154 算法提高 质数的后代
  7. uview框架u-form表单校验,rules校验对象中对象的值(解决 当form属性嵌套对象时未取到值的问题)
  8. Java实现二手交易系统
  9. imx6ul spi 设备驱动开发
  10. UiPath模拟浏览器登录qq邮箱并发送邮件方法与遇到的坑
  11. 龙讯4号 龙芯图谋你的客厅
  12. setprop service.adb.tcp.port 5555
  13. 压力变送器的特点及用途与维护
  14. “高通”字库芯片的使用方法
  15. 移动学习 AndroidStudio内存优化分析—hprof文件分析
  16. 鸿蒙不用百度网盘,百度网盘限速有救了!官方新出2种方法,不用开会员
  17. 微信读书,还有没有商业变现的机会?
  18. Kettle邮件发送
  19. 成都拓嘉辰丰电商:拼多多客服介入对商家有什么影响
  20. 乐山市计算机学校的董事长是,乐山市计算机学校庆祝建校25周年

热门文章

  1. linux文件重命名命令
  2. IMXRT 的Boot模式
  3. DSP学习总结——Boot引导模式
  4. 测绘程序设计——基础篇(1)C#编写方位角计算程序篇1——用户界面的构造
  5. HDU-4037-线段树-区间开根号
  6. 【转】这是一篇很完整的元器件选型指南
  7. 探花交友06-即时通信
  8. Google Earth Engine(GEE)——GEE版本的全球森林火灾信息获取并呈现2001-2020年四川省火灾亮度时间序列分析
  9. 西门子S7-PLCSIM仿真软件的应用
  10. 张超 计算机 清华 论文,张超-清华大学航天航空学院