Android 学习深入之路(应用层)

本人根据个人经验和同事讨论得出的一些看法,本着由浅入深,循循渐进的原则,陈述下Android学习的流程和要掌握的知识点。供Android 应用层和Framework层初学者以及初级工程师做相关参考。如有不对之处,敬请指出。

-------------------

总结:

先概括总结下,我目前把相关知识主要分如下5块。

  1. 常用基本知识;
  2. 常用架构;
  3. 性能优化方法;
  4. ANR处理方法;
  5. 设计模式。

----------------------------------------

详细说明:

下文是逐步要掌握的内容,排列顺序大致代表了学习顺序,也是面试中较常遇到的问题。

基本的知识

  1. android四大组件:activity, broadcastReceiver, service,content Provider.
  2. Activity 生命周期,Activity间数据传输以及activity四种启动模式。
  3. 常见布局方式:linearLayout,相对布局,帧布局,表格布局,绝对布局。
  4.  屏幕适配常用方法:
          a. 善用wrap_content,weight.
          b. 使用相对布局,
          c. 使用large等尺寸限定符,
          d. .9.png自动拉伸图。
  5. service启动方式和用途,倾向于后台执行操作。startService或bindService(调用者退出,服务也会停止)。
  6. 五种数据存储方式:sharePreference,文件存储(FileInputStream,大量数据,如文本,图片,音频),SQLite, ContentProvider(共享数据),网络存储。
  7. listview 优化方法:
          a. 在getView函数中的参数有个convertView用此对象来复用view;
          b.  重新建一个静态内部类,里面的组件和view中的一致,让view中的组件随着view的复用而复用;
          c. 分批加载和分页。
  8. 进程和线程区别,通信方式等。  
    a. 线程间通信:
              i. 共享内存(变量);
              ii. 文件和数据库;
              iii. handler;
              iv. java中的wait, notify。
      b. 进程间通信(利用四大组件,服务即是AIDL)。
  9. 帧动画,补间动画以及属性动画的差别。
  10. 定时器实现方式:   a. TimerTask,
          b. handler:
          c. AlarmManager:
  11. Handler 和 MessageQueue,handler 优化方案。
  12. 进程重要程度:前台,可视,服务,后台,空进程。

在了解了上面所说的这些东西后,基本上就了解了Android的基本知识点,对于应用层的需求基本可以通过拼凑代码实现了。这也是培训机构最容易做到的事情,但是在做一段时间后,必然会有一个从追求功能实现到开发效率的追求到性能优化的过程转变,同时也会碰到写问题需要你对底层代码流程和逻辑有所涉猎。


常用框架

Android 发展到现在可以说已经有很多成熟的框架了,利用这些框架可以大大节省我们的时间,这点对应用开发人员会有所帮助。

  1. Android 快速开发开源框架:http://blog.csdn.net/feiduclear_up/article/details/42740989。这几种框架大多封装了与网络,数据库,图片处理相关类
  2. Android常用网络框架:https://segmentfault.com/a/1190000008629146。

性能优化

关于性能优化,包括以下四点(可参考:https://www.kancloud.cn/kancloud/android-performance/53237):

      a. 渲染(布局);避免重复绘制,绘制时只绘制需要绘制的地方。
      b. 运算:
      c. 内存;
          i. 产生原因和优化方法;
          ii. 分析工具: mat, LeakCanary;
      d. 电量;

另外内存溢出和内存泄漏之间的关系也要有所了解。


ANR

程序稍微复杂,开几个线程就容易碰到ANR问题,ANR三种类型:
      a. 按键或触摸事件超时(5s,主要类型)
      b. 广播10s内未处理;
      c. 服务20s内(小概率类型)

至于怎么处理,我现在也只是半吊子,真是尴尬啊!。。


设计模式

从设计代码和阅读他人代码的角度上,设计出通俗易懂,易于修改的代码是非常重要的,这对于后期维护来说是件大有裨益的事情。另外了解一些常见的设计模式(如单例模式、观察者模式……)对我们阅读他人代码也会很有帮助。再次推荐大家阅读《Head first设计模式》。


至于其他的东西多多益善,大家可以通过查看相关岗位招聘要求有针对的去深入了解。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章