Android基础笔记(一)

Android 框架

Android 框架

  • 应用层
    市场上大部分所谓的APP就是在应用层的开发,是直接与用户交互的层次,Android开发者常见的Activity就是在应用层进行开发。

  • frameworks层
    直接翻译的话,应该叫做框架层,是Android运作的结构层次,大部分的厂商对手机定制等等就是在frameworks进行修改。
    主要包含了各种Manager,支撑其应用层的运行等。

  • Libraries
    这个其实也不好翻译,主要是一些依赖库吧,一些2D,3D引擎,SQLite数据库,WebKit浏览器引擎等等

  • Android RunTime
    ART机制,在应用的第一次安装时,会进行预编译(AOT,Ahead-Of-Time),将字节码预编译成机器码,成为真正的本地应用。

    Dalvik是Google设计的用于Android的虚拟机,每一个Dalvik应用作为一个独立的Linux进程执行,但是由于每次运行都会即时将字节码编译成机器码,运行的效率没有ART机制高。

    实际上ART机制就是一种控件换时间的机制,在Android 5.0之后,彻底从Dalvik过渡到了ART,Android的性能更高,更流畅。

  • Linux核心
    主要是各种驱动程序,保证硬件和Android的顺利交互。


Activity周期

Activity周期

几种常见的情况:

  1. 启动Activity:onCreate()->onStart()->onResume()->running

  2. 当前Activity被其他Activity覆盖或锁屏:onPause()

  3. 被覆盖状态回到前台或解锁屏:onResume()

  4. 当前Activity转到新Activity或回到主屏,自身退居后台:onPause()->onStop()

  5. 后退回到此Activity:onRestart()->onStart()->onResume()

  6. 处于2或4时,系统内存不足,杀死当前Activity,退回当前Activity:再次调用onCreate()->onStart()->onResume()

  7. 用户退出当前Activity:onPause()->onStop()->onDestory()

常见做法:

  1. 在onPause()保存当前Activity的一些数据,以便恢复,但是不能是太耗时的操作
  2. 在onDestory()中cancel掉Dialog,否则会出现异常

Service生命周期

Service正常周期

  • startService()创建的Service

    该Service通过其他的组件调用startService()启动。

    可以无限制的运行,必须调用stopSelf()方法或者其他组件调用stopService()来停止该Service。

    当Service停止时,系统调用onDestroy()销毁这个Service。

  • bindService()创建的Service

    被绑定的Service是其他组件调用bindService()来创建的。

    通过IBinder接口和Service进行通信。

    通过 unbindService()方法来关闭连接。

    一个Service可以同时和多个客户绑定,当多个客户都解除绑定之后,系统会销毁Service。

但是两者并不是完全无关的,一个使用了startService()启动的Service也可以通过bindService()与其他组件绑定的,这个时候,stopSelf()或者stopService()无法停止这个Service了,必须等所有的客户端都与它断开连接。

过程中绑定的Service


在公司实习期间,主要都在frameworks层开发,对应用层的知识反而有些生疏了,现在重新把知识点拉回到应用层,巩固一下。

关于实习中遇到的NDK的开发,我会抽空总结一下也发出来,网络上这方面的知识很少,对自己也算是一个学习和提升的过程。

文章目录
  1. 1. Android 框架
  2. 2. Activity周期
  3. 3. Service生命周期