android bea拷贝,从Android开发中学到一些东西
本人从事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开发中学到一些东西相关推荐
- android 拷贝list,Android开发实践:拷贝assets到sdcard
我们知道,Android工程目录下有一个assets文件夹,它到底有什么作用呢? 网上关于assets文件夹与res/raw文件夹的区别的讨论挺多的,也没有一个统一官方的结论,到底何时用assets, ...
- 原生Android也能做Web开发了
大家好,今天跟大家介绍一个让原生Android也可以做Web开发的开源项目--AndServer. 开源地址:github.com/yanzhenjie/- AndServer是一个Android端的 ...
- 深入浅出 - Android系统移植与平台开发(十)- Android编译系统与定制Android平台系统(瘋耔修改篇二)...
第四章.Android编译系统与定制Android平台系统 4.1Android编译系统 Android的源码由几十万个文件构成,这些文件之间有的相互依赖,有的又相互独立,它们按功能或类型又被放到不同 ...
- 【Android 高性能音频】Oboe 开发流程 ( Oboe 音频帧简介 | AudioStreamCallback 中的数据帧说明 )
文章目录 一.音频帧概念 二.AudioStreamCallback 中的音频数据帧说明 Oboe GitHub 主页 : GitHub/Oboe ① 简单使用 : Getting Started ② ...
- Android Studio1.4.x JNI开发基础 - 简单实例
接上一篇,搭建好基于Android Studio的环境之后,编写native代码相对来说也比较简单了.在Android上编写Native代码和在Linux编写C/C++代码还是有区别,Native代码 ...
- 《ArcGIS Runtime SDK for Android开发笔记》——(5)、基于Android Studio构建ArcGIS Android开发环境(离线部署)...
1.前言 在上一篇的内容里我们介绍了基于Android Studio构建ArcGIS Runtime SDK for Android开发环境的基本流程,流程中我们采用的是基于Gradle的构建方式,在 ...
- 连载 | Android之Camera1实现相机开发
一.前言 现在很多app都会有拍照功能,一般调用系统进行拍照裁剪就能满足平时的需求,但有些场景或者特殊情况下如:持续不间断拍多张照片或者是进行人脸识别的时候,这时候之间调用系统原生相机拍照时不能满足自 ...
- Android从驱动到应用开发实例分析
Android从驱动到应用开发实例分析 1. 第一个android应用程序 Android应用一般包含一个源代码目录src.一个资源目录res.一个配置文件AndroidManifest.xml.和一 ...
- Android Studio入门(安装--开发调试)
写在前面的话:本文来源:http://blog.csdn.net/yanbober/article/details/45306483 目标:Android Studio新手–>下载安装配置–&g ...
最新文章
- mysql 常规命令操作_mysql数据库常规命令操作
- 在统一软件开发过程中使用UML
- 史上最全JS表单验证封装类
- python量化交易2019_2019 量化交易策略实盘总结和一些展望
- gulp不生成打包文件_命令行输入gulp 无法生成压缩文件
- 蓝桥杯 ADV-154 算法提高 质数的后代
- uview框架u-form表单校验,rules校验对象中对象的值(解决 当form属性嵌套对象时未取到值的问题)
- Java实现二手交易系统
- imx6ul spi 设备驱动开发
- UiPath模拟浏览器登录qq邮箱并发送邮件方法与遇到的坑
- 龙讯4号 龙芯图谋你的客厅
- setprop service.adb.tcp.port 5555
- 压力变送器的特点及用途与维护
- “高通”字库芯片的使用方法
- 移动学习 AndroidStudio内存优化分析—hprof文件分析
- 鸿蒙不用百度网盘,百度网盘限速有救了!官方新出2种方法,不用开会员
- 微信读书,还有没有商业变现的机会?
- Kettle邮件发送
- 成都拓嘉辰丰电商:拼多多客服介入对商家有什么影响
- 乐山市计算机学校的董事长是,乐山市计算机学校庆祝建校25周年