当前位置:天才代写 > tutorial > 安卓教程 > 安卓开发技巧大全

安卓开发技巧大全

2021-02-26 14:05 星期五 所属: 安卓教程 浏览:29

Android开发设计60条技术性经验交流

1. 所有 Activity 可承继自 BaseActivity,便于统一设计风格与解决公共事件,搭建提示框统一搭建器的创建,万一必须总体变化,一处改动四处合理。

2. 数据库表段字段名变量定义和 SQL 逻辑性分离出来,更清楚,提议应用 Lite 系列产品架构 LiteOrm 库,非常清楚且重心点能够放到业务流程上无需关注数据库查询关键点。

3. 静态变量放全局性类中,控制模块独享放自身的管理类专业中,让变量定义清楚且集中化.

4. 不要相信巨大的管理类专业的物品会产生什么好处,可能是一场灾祸,而要時刻留意单一岗位职责标准,一个类专心致志搞好一件事情更加清楚。

5. 假如数据信息沒有必需载入,数据信息请尽量延迟时间复位,切记为客户节约运行内存,总不容易有弊端。

6. 出现异常抛出去,在适合的部位解决或是集中化运输,不必搞的四处是 catch,错乱且特性低,尽可能不要在循环体中捕捉出现异常,以提高特性。

7. 详细地址引入链长时(3 个之上偏向)当心内存泄漏,和警醒局部变量详细地址偏向,典型性的高发事情是:数据信息升级了,ListView 主视图却沒有更新,这时候 Adapter 很可能偏向并的并不是你升级的数据信息器皿详细地址(一般为 List)。

8. 信息内容同歩:无论是数据库查询還是网互联网实际操作,新插进的数据信息留意回到 ID(要是没有授予唯一 ID),不然等同于沒有同歩。

9. 线程同步实际操作数据库查询时,db 关掉了会出错,也很可能出現自锁互锁的难题,强烈推荐应用事务管理,强烈推荐应用自动化技术的 LiteOrm 库实际操作。

10. 做以前先考虑到这些能够公共,資源,layout,类,做一个构造、构架剖析以加速开发设计,提高编码可多路复用度。

11. 井然有序序列实际操作 add、delete 实际操作时留意维持排列,不然你能较为尴尬喔。

12. 数据库查询删掉数据信息时,要留意联级实际操作防止出现始终无法删除的脏数据喔。

13. 有关形参实参:调用函数时主要参数为基础种类传的是值,即传值;主要参数为目标传送的是引入,即传址。

14. listview 在数据信息没满一屏时,setSelection 涵数失灵;ListView 批量操作时各子项目和主视图恰当相匹配,由此可见即选定。

15 操纵 Activity 的编码量,维持关键逻辑清晰。别的类遵循 SRP(单一职责),ISP(接口隔离)标准。

16. arraylist 实行 remove 时留意清除 int 和 Integer 的差别。你懂。

17. Log 请打上 Tag,调节复印一定要做标识,能精准定位复印部位,不然难堪是:不清楚是哪里在复印。

18. 码块/变量定义/資源能够集中化公共的一定同用,即便同用逻辑性稍繁杂一点也会非常值得,改动起來很轻轻松松,改动一种,四处合理。

19. setSelection 失灵,试着 smoothScrollToPosition。ListView 的 LastVisiblePosition(最后一个由此可见子项目)会伴随着 getView 方式实行部位不一样变化而变。

20. 与 Activity 通信应用 Handler 更便捷; 假如你的架构回调函数链拉长,考虑到监视者方式简单化回调函数。

21. 监视者方式不方便快捷时,强烈推荐 EventBus 架构库,使用时间系统总线,没触碰过的同学们能够自主想象一下哦。

22. Handler 在子进程进程应用 Looper.prepare,或是 new 的情况下给构造方法传到 MainLooper 来保证在主线任务程 run。

23. timepicker 点一下明确后必须 clearFocus 才可以获得手动式键入的時间。

24. 构造方法里边极其不强烈推荐运行多线程进程,会种下安全隐患。例如:多线程进程启用了本例的实例,便会不幸等待奔溃吧。

25. 千万别理所应当的认为一个目标不容易为空,充足的搞好容错机制解决;此外留意 null 还可以插进 ArrayList 等器皿中。

26. ExpandableListView 的子目录不可以点一下(禁止使用)要把 Adapter 的 isChildSelectable 方式回到 true。

27. UI 表明留意內容太长的情况要提早应用 ScrollView 不然在小手机上难堪你懂。

28. 留意按键的磁感应范畴不小于 8mm 不然不容易点一下;文本框留意鼠标光标的部位更易客户键入。

29. 网络服务器和手机客户端尽可能统一唯一标志(有可能是 ID),不然是多少会出现模棱两可和难题。

30. 注解,尽可能去写充足的注解,去叙述一下构思,做到看过能够搞清楚某一块编码的实际效果。

31. 完整型数据信息一定要用 Sqlite 的 Transaction,互联网大数据一定要用。粗略地检测插进 100 个数据信息有 20 倍的加速,插进 1000 个数据信息就会有 100 几倍的加速。

32. 防止 String=”null”的状况出現 String = null,=””都能够。防止出现 title=”无主题风格”那样的数据信息递交到数据库查询消耗室内空间。

33. 存有好几个不一样的 dbhelper 案例状况下,sqlitedatabase 目标必定存有不一样的案例,线程同步另外载入数据信息,轮着载入数据信息的时候会不定时执行的报 db is locked,造成奔溃,无论是实际操作同张表還是异表。读和写能够另外高并发,轮着没有规律性的更替实行。另外载入数据信息时解决方法是用高并发的每一个进程都用事务管理,db 则不容易 lock,按次总体载入。

34. 提议全部运用维护保养一个 dbhelper 案例,只需 db 沒有关掉,全局性就只有一个 db 案例,线程同步高并发载入 db 不容易 lock,严苛更替开展载入:123123123。。。(123 意味着不一样进程,轮流插入一个纪录),读和写均不容易锁定 db,读写能力更替并沒有规律性,实行频次和水平看 cpu 分派给哪一个进程的時间全片。

35. 一个每日任务应用事务管理嵌入N个事务管理,N个事务管理中有一个不成功,这一每日任务总体不成功,所有取得成功后,数据信息才载入,具备安全系数,全面性。而且事务管理载入大批数据信息的高效率经具体检测不计其数倍的高过一般的单独载入。数据库查询很多数据信息、线程同步实际操作提议应用 LiteOrm 数据库查询架构,更平稳简易。

36. 常常必须用 ListView 或是其他表明很多 Items 的控制实时跟踪或是查询信息内容,而且期待全新的内容能够全自动翻转到可视性范畴内。根据设定的控制 transcriptMode 特性能够将 Android 服务平台的控制(适用 ScrollBar)全自动滚动到最底端。

37. Long a; 分辨a是否有取值,if (a == 0) 在a沒有取值状况下能出错。应当 if (a == null),Integer、Floag 等也一样,缘故你懂得,仅仅提示你需要当心喔。

38. 编号碰到读写能力、进出等逻辑性要双重考虑到,文档导入导出,标识符字节数互相变换都需要两侧转换格式。

39. 一个 int 值与一个 Integer 目标(能包括 int 值的最少目标)的尺寸比例约为 1:4(32 位和 64 位设备有不一样)。附加的花销来源于 JVM 用以叙述 Java 目标的数据库也就是 Integer,(Long、Double 等也是)。

40. 目标由数据库和数据信息构成。数据库包含类(偏向类的表针,叙述了类的种类),标识(叙述了目标情况,如散列码、样子等),锁(目标同歩信息内容)。二维数组目标还包含尺寸的数据库。

41. 一个在 32 位 Java 运作时中应用 2GBB Java 堆的 Java 应用软件在转移到 64 位 Java 运作时以后,一般 必须应用 1.7GB 的 Java 堆。

42. Hash 结合的浏览性能提升一切 List 的特性都需要高,但每条目地成本费还要高些。因为浏览特性层面的缘故,假如您已经建立大结合(比如,用以完成缓存文件),那麼最好是应用根据 Hash 的结合,而无须考虑到附加的花销。

43. 针对并不那麼重视浏览特性的较小结合来讲,List 则是有效的挑选。ArrayList 和 LinkedList 结合的特性大致同样,但其内存占用彻底不一样:ArrayList 的每内容尺寸要比 LinkedList 小得多,但它并不是精确设定尺寸的。List 要应用的恰当完成是 ArrayList 還是 LinkedList 在于 List 长短的可预见性。假如长短不明,那麼恰当的挑选可能是 LinkedList,由于结合包括的空缺室内空间更少。假如尺寸已经知道或可预料或较为小,那麼 ArrayList 的运行内存花销会更低一些。

43. 挑选恰当的结合种类使你可以在结合特性与内存占用中间做到有效的均衡。此外,你能根据恰当调节结合尺寸来利润最大化添充率、降到最低未获得运用的室内空间,进而最大限度地降低内存占用。

44. 灵活运用封裝(出示接口类来操纵浏览数据信息)和授权委托(helper 目标来执行每日任务)二种核心理念。

45. 延迟时间分派 Hashtable:假如 Hashtable 为空是常常产生的普遍存在,那麼仅在存有必须储存的数据信息时分派 Hashtable 应该是一种有效的作法。将 Hashtable 分派为精确的尺寸:尽管会出现默认设置尺寸,但提议应用更加精确的原始尺寸。

46. EditText 在 setText 时别忘记是不是必须 setSelection。在大部分状况下是必须设定的。

47. XML 二种状况要留意:1 特性姓名情况下有反复;2 留意文字是不是包括非法字符,留意应用 CDATA 包囊。

48. 当逻辑性沒有显著难题时考虑到目标特性、函数参数、数据传输主要参数是不是所有掌握,是不是设定恰当。

49. 当出現编译程序或是运行时错误,他人那没什么问题时,考虑到你的编译程序自然环境和自然环境版本号是不是有什么问题。

50. 因为 String 类的 immutable 特性,当 String 自变量必须常常转换其值时,应当考虑到应用 StringBuilder 提高特性,线程同步应用 StringBuffer 实际操作 string 提升程序流程高效率。

51. java 栈的优点是比堆速度更快,可共享资源,关键储放临时性自变量、主要参数等,堆的优点是可动态分配内存空间。

52. 只需是用 new ()来新创建目标的,都是会在堆中建立,并且其数据信息是独立存值的,即便与栈中的数据信息(值)同样,也不会与栈中的信息共享。

53. 基础基本数据类型界定的自变量称全自动自变量,存的是‘字颜值’,存有于栈中,可共享资源(存有即不新创建)。

54. 好几个 RandomAccessFile 目标偏向同一个文档,可应用好几个进程一起载入不用再自身上锁,经实验结果:三个进程各自载入 100 一万次数据信息,应用锁约 12 秒,不应用约 8.5 秒。100 个进程各自载入 1 一万次数据信息应用锁用时约 4.2 秒,不应用锁用时约 3 秒。

55. XmlPullParser 分析谨慎使用 nextText ()方式,xml 非常复杂,带有空标识、重复名字标识时非常容易发现异常难题;TEXT 中应用 getText ()方式替代 START_TAG 中应用 nextText ()方式;START_TAG,TEXT,END_TAG 三个事情相互配合应用。留意每一个 xml 连接点中间(无论是逐渐连接点還是完毕连接点)都是会出現 TEXT 事情。

56. 更改逻辑性的情况下考虑到所有采用此项作用的地区,分散化的地区多了,非常容易疏忽。

57. 当系统软件原生态部件出現难题时,查询不正确栈信息内容,自身写一个该部件的子类,并在适合的地区将打错方式复写一下,再加上 try catch 确保不奔溃掉。不必搅乱了该系统软件控制的一切正常逻辑性。

58. 键入控制留意对空格符、自动换行等标记的操纵;文本框里內容留意和上下控制的室内空间,避免 误点一下。

59. 留意函数参数里的 或是–实际操作。是 c 還是 c ,差别非常大。

60. 各种各样地区、始终的不必小瞧 null 表针难题,乃至有一些场所宁可错杀(try catch),不能忽略。

 

    关键字:

天才代写-代写联系方式