湖北荆州人,现在深圳工作。从事Android应用开发6年,主要集中在应用层即App的开发,当前从事系统app的开发。随着工作年限的增加,越发觉得有必要对以前零零散散的知识点做归纳和整理,也需要对开发技能做更深层次的研究和学习。希望自己能写一些东西,对其他开发者起到一定的帮助。
随着IDE功能的不断加强,APK的打包几乎被一手包办,使得很多Android程序员并不了解其过程。而深入了解APK的打包流程,有助于更好地理解APK的结构及Android机制,也能很好地感受到Anroid虚拟机在优化道路上孜孜不倦的追求。
android性能优化问题一直是android开发者遇到的难点之一。性能优化包含的内容广而且比较深,内存的分配、管理、回收、溢出、优化,android进程机制,各种性能优化工具的使用,电量,界面流畅度等等,无一不是需要深入探究和分析才能办得到的。
笔者从事android开发有好几年了,经常会碰到这样的现象:由于不同的程序员对log输出有着不同的处理风格,同一款app中,往往有着五花八门的处理方式。 同时,对于Android Log的使用也一直存在不少模棱两可的认识:比如,log等级这么多,什么情况下要用什么等级;log哪些地方不宜使用,为什么不宜使用;Mobile log这么多,要如何高效地查看等。
Android虚拟机的使用,使得android应用和Linux内核分离,这样做使得android系统更稳定可靠,比如程序中即使包含恶意代码,也不会直接影响系统文件;也提高了跨平台兼容性。在Android4.4以前的系统中,Android系统均采用Dalvik作为运行andorid程序的虚拟机,在android发展中具有举足轻重的地位,而Android 5.0及以后的系统使用ART虚拟机取代Dalvik,在性能上做了很大的优化。
JVM提供了大量的垃圾收集器来完成内存的回收工作,采用了根搜索算法、分代算法等各种算法来实现垃圾回收。Java程序员为了更好地调优内存,并为了防止内存泄漏,必须对内存回收机制做一定的了解,并能合理使用强引用、软引用、弱引用。
相比于C/C++,Java通过JVM自动完成内存的分配和回收,为Java程序员带来了极大的便利。但也正因为如此,由于平时对JVM的依赖,当内存碰到如内存泄漏等问题时,往往束手无策。所以,充分了解Java内存及其分配,是一个资深程序员的必备内功之一。
工作中用到过的git命令整理 git是我们平时最常用的版本控制工具。相比于svn,git有如下几大优势:(1)git是分布式管理,不需要单独的服务器存储代码,团队中的每一台机器都可以作为服务器,都相互独立。
如果您的app中没有使用过Handler,那您一定是写了个假app;如果您笔试题中没有遇到Handler相关的题目,那您可能做了份假笔试题;如果您面试中没被技术官问到Handler的问题,那您也许碰到了个假面试……因为它太重要了,也太容易因使用不当二带来很多问题。
尽管Android基于Linux Kernel,但在进程管理上,却采取了另外一种独特的设计:当进程活动停止时,系统并不会立刻结束它,而是会尽可能地将该进程保存在内存中,在以后的某个时间,一旦需要该进程,系统就会立即进入该进程,而无需再初始化。
Android性能优化无疑是Android中的一个重点,也是一个难点。之所以说是重点,是因为在面试中,面试官对性能相关的问题是乐此不疲;在工作中,越是大厂,代码产生的性能问题越是苛刻。之所以说是难点,是因为工作中性能优化的任务往往都是由经验比较丰富的工程师或者架构师来担任的,而且Android性能方面的问题比较广,经常让初学者晕头转向。
工作中Lint工具使用实录及整理 AndroidStudio内置的Lint工具,对app中的代码规范带来了极大的方便。
结合51CTO学院中张凌华老师讲的编码风格课程,对自己平时工作中的形成的一些编码风格做一些总结。 一. 项目开发目录命名: Requirement - 需求相关文档 Design - 设计 Planning&Log - 计划,日志,会议 Test -...