Android安卓编码规范及性能优化

从零开始:在Unity中使用Dynamic Bone实现角色骨骼自然抖动(以女性角色胸部为例) 本文详细介绍了在Unity中使用Dynamic Bone插件实现角色骨骼自然抖动的完整流程,特别以女性角色胸部为例。从插件导入、骨骼系统基础到Dynamic Bone组件配置和参数调优,提供了全面的技术指导。文章还包含性能优化技巧和常见问题解决方案,帮助开发者快速掌握这一物理效果实现方法。 阅读详情
一、Android编码规范

1.java代码中不出现中文,最多注释中可以出现中文
2.局部变量命名、静态成员变量命名
只能包含字母,单词首字母出第一个外,都为大写,其他字母都为小写
3.常量命名
只能包含字母和_,字母全部大写,单词之间用_隔开
4.layout中的id命名
命名模式为:view缩写_模块名称_view的逻辑名称
view的缩写详情如下
LayoutView:lv
RelativeView:rv
TextView:tv
ImageView:iv
ImageButton:im
Button:btn
5.activity中的view变量命名
命名模式为:逻辑名称+view缩写
建议:如果layout文件很复杂,建议将layout分成多个模块,每个模块定义一个moduleViewHolder,其成员变量包含所属view
6.strings.xml中的id命名
命名模式:activity名称_功能模块名称_逻辑名称/activity名称_逻辑名称/common_逻辑名称
strings.xml中,使用activity名称注释,将文件内容区分开来
7.drawable中的图片命名
命名模式:activity名称_逻辑名称/common_逻辑名称
7.styles.xml:将layout中不断重现的style提炼出通用的style通用组件,放到styles.xml中;
8.使用layer-list和selector
9.图片尽量分拆成多个可重用的图片
10.服务端可以实现的,就不要放在客户端
11.引用第三方库要慎重,避免应用大容量的第三方库,导致客户端包非常大
12.处理应用全局异常和错误,将错误以邮件的形式发送给服务端
13.图片的.9处理
14.使用静态变量方式实现界面间共享要慎重
15.Log(系统名称 模块名称 接口名称,详细描述)
16.单元测试(逻辑测试、界面测试)
17.不要重用父类的handler,对应一个类的handler也不应该让其子类用到,否则会导致message.what冲突
18.activity中在一个View.OnClickListener中处理所有的逻辑
19.strings.xml中使用%1$s实现字符串的通配
20.如果多个Activity中包含共同的UI处理,那么可以提炼一个 CommonActivity ,把通用部分叫由它来处理,其他activity只要继承它即可
21.使用button+ activitgroup 实现tab效果时,使用Button.setSelected(true),确保按钮处于选择状态,并使activitygroup的当前activity与该button对应
22.如果所开发的为通用组件,为避免冲突,将drawable/layout/menu/values目录下的文件名增加前缀
23.数据一定要效验,例如
字符型转数字型,如果转换失败一定要有缺省值;
服务端响应数据是否有效判断;
24.同一个客户端如果要放在不同的市场,而且要统计各个市场下载及使用数据时
针对不同的客户端打不同的包,唯一的区别是versionName,apk文件名为versionName.apk
在升级时,要将自己的versionCode和versionName一并传给服务端,如果需要升级,则下载versionName相对应的apk
关于是否要强制升级:
1).不管何种情况都强制升级
2).判断用户的版本和当前最新版本,如果兼容则强制升级,否则可选;
25.有的按钮要避免重复点击
二、Android性能优化
1.http用gzip压缩,设置连接超时时间和响应超时时间
http请求按照业务需求,分为是否可以缓存和不可缓存,那么在无网络的环境中,仍然通过缓存的httpresponse浏览部分数据,实现离线阅读。
2.listview 性能优化
1).复用convertView
在getItemView中,判断convertView是否为空,如果不为空,可复用。如果couvertview中的view需要添加listerner,代码一定要在if(convertView==null){}之外。
2).异步加载图片
item中如果包含有webimage,那么最好异步加载
3).快速滑动时不显示图片
当快速滑动列表时(SCROLL_STATE_FLING),item中的图片或获取需要消耗资源的view,可以不显示出来;而处于其他两种状态(SCROLL_STATE_IDLE 和SCROLL_STATE_TOUCH_SCROLL),则将那些view显示出来
4).BaseAdapter避免内存溢出
如果BaseAdapter的实体类有属性非常消耗内存,可以将保存到文件;为提高性能,可以进行缓存,并限制缓存大小。

3.使用线程池,分为核心线程池和普通线程池,下载图片等耗时任务放置在普通线程池,避免耗时任务阻塞线程池后,导致所有异步任务都必须等待
4.异步任务,分为核心任务和普通任务,只有核心任务中出现的系统级错误才会报错,异步任务的ui操作需要判断原activity是否处于激活状态
5.尽量避免static成员变量引用资源耗费过多的实例,比如Context
6.使用WeakReference代替强引用,弱引用可以让您保持对对象的引用,同时允许GC在必要时释放对象,回收内存。对于那些创建便宜但耗费大量内存的对象,即希望保持该对象,又要在应用程序需要时使用,同时希望GC必要时回收时,可以考虑使用弱引用。
7.超级大胖子Bitmap
及时的销毁(Activity的onDestroy时将bitmap回收,在被UI组件使用后马上进行回收会抛RuntimeException: Canvas: trying to use a recycled bitmap android.graphics.Bitmap) 设置一定的采样率(有开发者提供的图片无需进行采样,对于有用户上传或第三方的大小不可控图片,可进行采样减少图片所占的内存),从服务端返回图片,建议同时反馈图片的size 巧妙的运用软引用 drawable对应resid的资源,bitmap对应其他资源 任何类型的图片,如果获取不到(例如文件不存在,或者读取文件时跑OutOfMemory异常),应该有对应的默认图片(默认图片放在在apk中,通过resid获取);
8.保证Cursor 占用的内存被及时的释放掉,而不是等待GC来处理。并且 Android明显是倾向于编 程者手动的将Cursor close掉
9.线程也是造成内存泄露的一个重要的源头。线程产生内存泄露的主要原因在于线程 生命周期的不可控
10.如果ImageView的图片是来自网络,进行异步加载
11.应用开发中自定义View的时候,交互部分,千万不要写成线程不断刷新界面显示,而是根据TouchListener事件主动触发界面的更新
12.Drawable
ui组件需要用到的图片是apk包自带的,那么一律用setImageResource或者setBackgroundResource,而不要根据resourceid
注意:get(getResources(), R.drawable.btn_achievement_normal)该方法通过resid转换为drawable,需要考虑回收的问题,如果drawable是对象私有对象,在对象销毁前是肯定不会释放内存的。
13.复用、回收Activity对象
临时的activity及时finish
主界面设置为singleTask
一般界面设置为singleTop
14.位置信息
获取用户的地理位置信息时,在需要获取数据的时候打开GPS,之后及时关闭掉
15.在onResume时设置该界面的电源管理,在onPause时取消设置


三、AndroidUI优化

1.layout组件化,尽量使用merge及include复用
2.使用styles,复用样式定义
3.软键盘的弹出控制,不要让其覆盖输入框
4.数字、字母和汉字混排占位问题:将数字和字母全角化。由于现在大多数情况下我们的输入都是半角,所以 字母和数字的占位无法确定,但是一旦全角化之后,数字、字母的占位就和一个汉字的占位相同了,这样就可以避免由于占位导致的排版问题。
5.英文文档排版:textview自动换行时要保持单词的完整性,解决方案是计算字符串长度,然后手动设定每一行显示多少个字母并加上‘\n‘
6.复杂布局使用RelativeLayout
7.自适应屏幕,使用dp替代pix
8.使用android:layout_weight或者TableLayout制作等分布局
9.使用animation-list制作动画效果
Unity 之如何使用Pico4u锚点功能实现一个世界锁GameRoot 摘要 空间锚点技术是混合现实(MR)应用的核心,能永久记录虚拟物体的空间位置。文章介绍了在Unity中使用Pico SDK实现空间锚点的完整流程:1)环境配置需安装XR模块和Pico SDK;2)关键操作包括启动空间感知、创建/删除/查询/更新锚点;3)提供了经典应用案例,通过GameRoot节点实现场景固定和锚点同步。源码展示了基于XR交互工具包的锚点抓取与位置更新实现,为MR开发提供了实用参考方案。 阅读详情

相关推荐

STM32F103C8T6与OV7670摄像头在TFT屏上的实时数字识别系统实现

本文详细介绍了基于STM32F103C8T6单片机和OV7670摄像头实现实时数字识别系统的全过程。系统通过图像采集、预处理、二值化和模板匹配算法,在TFT屏上实时显示识别结果,并针对资源受限的单片机环境提供了内存与性能优化策略,适用于智能家居、工业仪表读数等低成本嵌入式视觉应用场景。

open4的博客 278

Android最佳性能实践(三)——高性能编码优化

在前两篇文章当中,我们主要学习了Android内存方面的相关知识,包括如何合理地使用内存,以及当发生内存泄露时如何定位出问题的原因。那么关于内存的知识就讨论到这里,今天开始我们将学习一些性能编码优化的技巧。 避免创建不必要的对象 创建对象从来都不应该是一件随意的事情,因为创建一个对象就意味着垃圾回收器需要回收一个对象,而这两步操作都是需要消耗时间的。虽说创建一个对象的代价确实非常小,并且Android 2.3版本当中又增加了并发垃圾回收器机制,这让GC操作时的停顿时间也变得难以察觉,但是这些理由都不足以让我

郭霖的专栏 6万+

AUTOSAR BswM配置实战:手把手教你用Vector Davinci Configurator搭建第一个模式管理规则

本文详细介绍了如何使用Vector Davinci Configurator工具配置AUTOSAR BswM模块,实现车身控制ECU的模式管理规则。通过实战案例,从环境准备、核心概念梳理到具体配置步骤,包括ModeRequestPort、ModeCondition、Logical Expression和Rules的构建,帮助工程师快速掌握BswM配置技巧,提升汽车电子软件开发效率。

weixin_28678831的博客 353

Android高性能编码 - 第七篇 Efficient Java与Android Lint

7.1 Efficient Java中的性能要点Effective Java是一本被广泛认可的著作,它指明了在写Java代码时兼顾可维护性与效率的方式。Android也是使用Java来开发的,书中的部分建议可能不适用,因为并非所有Java特性都有针对Android优化(比如说枚举,序列化等等),或者是因为移动设备的局限(例如Dalvik/ART)。不管怎样,书中的大部分规范是稍微修改下甚至不修改就...

BlueYangDroid的专栏 333

腾讯滑块验证码collect参数逆向与JSVMP对抗实战

本文深入解析腾讯滑块验证码collect参数的逆向过程与JSVMP虚拟机对抗技术。通过详细的环境搭建、抓包分析和JSVMP逆向技巧,揭示collect参数的生成逻辑与加密流程,并提供完整的模拟实现方案和常见问题排查方法,助力开发者突破腾讯天御验证码的防护机制。

weixin_29009501的博客 1576

LDA模型参数优化实战:从auto设置到passes调优

本文深入探讨了LDA主题模型的参数优化实战,重点解析了如何通过设置alpha='auto'与eta='auto'让模型自适应语料,并详细阐述了passes参数对训练效果的核心影响。文章提供了系统的调优方法与评估策略,旨在帮助用户从“能用”到“用好”LDA,产出清晰、可解释的主题分析结果。

weixin_29163797的博客 118

Android高性能编码优化

转载于: http://blog.youkuaiyun.com/guolin_blog/article/details/42318689 避免创建不必要的对象 创建对象从来都不应该是一件随意的事情,因为创建一个对象就意味着垃圾回收器需要回收一个对象,而这两步操作都是需要消耗时间的。虽说创建一个对象的代价确实非常小,并且Android 2.3版本当中又增加了并发垃圾回收器机制,这让GC操作时的停顿时间也

ZY_RainBow的博客 317

增益可控放大电路-电路与电子技术课程设计

增益可控放大电路-电路与电子技术课程设计

Yeats_Liao的博客 1万+

Android Studio自动检查代码规范并提示如何优化的一些插件

推荐几个项目可能用到的插件 1.CheckStyle 首先进入设置页面进入Plugin页面,如图所示 点击Browse repositories进入选择页面,输入checkstyle即可选择安装,如图所示 安装完成后点击Other Settings中的checkstyle进入选择文件页面,点击右上方的“+”选择你自己的checkstyle文件并应用即可。

zhou_wenchong的博客 8603

Simulink开发项1000例实战专栏--实例148:构建一个完整的电动汽车电池SOH评估仿真模型,包括电池建模模块、数据采集模块、SOH估算算法模块以及性能评估模块

电动汽车的动力电池是其核心部件,而电池的健康状态(State of Health, SOH)直接影响车辆的续航能力和使用寿命。SOH通常定义为当前电池容量与初始容量的比值,用百分比表示。通过基于MATLAB/Simulink平台的SOH评估仿真,可以实时监测电池的退化情况,并为电池管理系统(BMS)提供决策依据。本项目旨在构建一个完整的电动汽车电池SOH评估仿真模型,包括电池建模模块、数据采集模块、SOH估算算法模块以及性能评估模块,并通过仿真验证SOH评估的准确性。

xiaoheshang_123的博客 342

30天入门 SAP BTP 开发系列之八:动手在 SAP BTP 上开发第一个 ABAP 透明表

ABAP Cloud 环境下创建透明表的方法与数据迁移实践 本文介绍了在 SAP BTP ABAP 环境中创建透明表并迁移数据的完整流程。与传统的 SE11 事务码不同,ABAP Cloud 需通过 ABAP Development Tool 创建数据库表,使用代码定义表结构。作者详细演示了如何: 在开发包中创建名为 Z优快云_TRAVEL 的透明表 使用 ABAP 代码定义表字段和约束 通过 ABAP 类实现数据从标准表/DMO/TRAVEL 到新建表的迁移 验证数据迁移结果 文中还提供了相关技术概念的

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1788

Android编码规范及性能优化整理

最近看到新人的android代码实在问题太多,一些基本的地方都有问题,于是重新培训了下代码规范,希望后面能慢慢好起来。 一、Android编码规范 1.java代码中不出现中文,最多注释中可以出现中文 2.局部变量命名、静态成员变量命名只能包含字母,单词首字母出第一个外,都为大写,其他字母都为小写 3.常量命名只能包含字母和_,字母全部大写,单词之间用_隔开

西涛offbye-移动全栈技术博客 1534

12、有杆泵抽油系统:原理、性能与选择

本文全面介绍了有杆泵抽油系统的原理、性能分析和设备选择方法。有杆泵抽油系统广泛应用于石油开采领域,通过地面抽油装置与井下柱塞泵的配合,实现高效、稳定的原油提升。文章详细解析了系统的工作原理、组成结构、光杆运动特性、载荷计算、泵输送能力及功率需求,并提供了抽油装置的选择流程和实际案例分析。此外,还探讨了泵的容积效率影响因素、示功图的作用及系统优化运行的建议,为石油开采工程提供了理论支持和实践指导。

gan8painter的博客 434

Android开发编码规范、性能优化、UI优化及开发建议

一、Android编码规范   1.java代码中不出现中文,最多注释中可以出现中文;   2.局部变量命名、静态成员变量命名:只能包含字母,单词首字母出第一个都为大写,其他字母都为小写;   3.常量命名:只能包含字母和_,字母全部大写,单词之间用_隔开;   4.layout中的id命名:命名模式为:view缩写_模块名称_view的逻辑名称   view的缩写详情如下   Lin

西安尚学堂java培训 469

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Android开发规范--编码规范/性能优化/UI优化

本文作者从Android编码规范、Android性能优化、Android UI优化这三个方面讲述了Android开发规范,Android开发者应该好好阅读这篇文章。 一、Android编码规范 1.java代码中不出现中文,最多注释中可以出现中文 2.局部变量命名、静态成员变量命名 只能包含字母,单词首字母出第一个外,都为大写,其他字母都为小写 3.常量命名 只能包含字母和_,字母

System Architect 966

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Android性能优化编码规范

写出高效的代码有两条基本的原则: l  不作没有必要的工作。 l  尽量避免内存分配。     1.避免创建不必要的对象 对象创建永远不会是免费的。每个线程的分代GC给零时对象分配一个地址池以降低分配开销,但往往内存分配比不分配需要的代价大。 如果在用户界面周期内分配对象,就会强制一个周期性的垃圾回收,给用户体验增加小小的停顿间隙。Gingerbread中提到的并发回收也许有用,但不

我们很欢乐 1万+

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Android编码规范

刚实习找工作那会儿是很困难的,基本上投出去的简历都是石沉大海,因为没有实际的项目开发经验、没有牛逼的背景、更重要的是没有真才实学,尽管我大学期间读的是计算机专业,也算是科班出身,可是……你懂的。后来勉强一家公司收留了我,然后一个问题立马出现在我的面前,那就是编写代码时候变量的命名:TextView ,ListView ……几乎是每一个.java or .xml 文件中命名的格式都不一样。其实,自己在

ZhangGeng's Blog 3784

【IVI】车载VHAL属性配置与区域管理详解

在Android Automotive OS中,VHAL(Vehicle Hardware Abstraction Layer)扮演着车辆硬件与软件系统间的桥梁角色。简单来说,它就像一位精通多国语言的翻译官,把车窗升降、空调调节等硬件操作转换成Android系统能理解的标准化指令。**属性(Property)**是VHAL的核心抽象单元,每个属性都代表一个具体的车辆功能状态。比如:0x00000201 表示左前车窗位置0x00400111 对应驾驶座温度调节。

weixin_34274029的博客 883

Android编程规范与常用技巧

转至http://stormzhang.com/android/2013/07/21/android-coding-standards/ 一、Android编码规范 1.java代码中不出现中文,最多注释中可以出现中文 2.局部变量命名、静态成员变量命名 只能包含字母,单词首字...

126

Android开发规范之编码规范2

Android开发规范之编码规范2 1,java代码中不出现中文,最多注释中可以出现中文,中文统一写在strings.xml中; 2,局部变量命名、静态成员变量命名 只能包含字母,单词首字母大写,其他字母都为小写 3,常量命名只能包含字母和_,字母全部大写,单词之间用_隔开 4,布局文件中的id命名 命名模式为:view缩写_模块名称_view的逻辑名称 常用控件的缩写如下 LayoutView:...

wdx_1136346879的博客 220

安卓开发规范(仅限自己收藏)

Android开发规范是本文要介绍的内容,主要是来了解并学习Android开发中一些细节的内容,具体关于Android开发规范内容的详解来看本文。 一、Android开发编码规范 1、java代码中不出现中文,最多注释中可以出现中文 2、局部变量命名、静态成员变量命名 只能包含字母,单词首字母出第一个外,都为大写,其他字母都为小写 3、常量命名 只能包含字母和,字母全部大写,单词之间用...

AHAI1078766113的博客 338

安卓开发规范

Android开发规范是本文要介绍的内容,主要是来了解并学习Android开发中一些细节的内容,具体关于Android开发规范内容的详解来看本文。 一、Android开发编码规范 1、java代码中不出现中文,最多注释中可以出现中文 2、局部变量命名、静态成员变量命名 只能包含字母,单词首字母出第一个外,都为大写,其他字母都为小写 3、常量命名 只能包含字母和_,字母全部大写,单词之间

beibeixiaonvwu的专栏 675
上一篇: android应用卸载提示(实用推荐)
下一篇: Android权限代码大全
thisiscx
博客等级 码龄26年 5粉丝 4原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值