初识Android一之生命周期


第一次接触安卓开发,感觉很有必要把生命周期弄明白,不然感觉云里雾里很难受,总之很难受!!!于是把老师的ppt结合各种网上搜来的瞄了一遍,
记录一下自己小小的理解和大大的感受。

1.程序生命周期

程序生命周期是什么?程序生命周期么就是在android系统中进程从创建到终止的所有阶段。

Android会根据组件的重要程度将系统中的每个进程分别分为5大类:

  • 前台进程:可见并可以与用户交互(优先级最高)。
  • 可见进程:可见但不可交互。
  • 服务进程:有启动服务的进程,无用户界面,长期后台运行如后台音乐播放。
  • 后台进程:不包含任何启动的服务,无用户可见的进程,如用户按home键,程序就成为后台进程。ps:系统会随时终止后台进程,为前三种进程提供足够的内存。
  • 空进程:不包含任何活跃组件的进程,存在的目的是提供一种缓存机制,为了下次打开这个软件的时候可以更加方便快速,一旦手机要更多内存,最先被处理。如用户按退出键,程序变为空进程(优先级最低)。
    ps:所以可见,要退出软件时,最好用退出键,让其变为空进程,也没必要主动去清理,系统自己会清理,主动去清理反而违背了系统设计的意志。

2.四大组件

在说Activity的生命周期前,得了解什么是Activity。记得上课时,老师讲到Activity,旁边一哥们问我啥是Activity,我很虚的回答,活动啊,
活动是神马,我也不知道,但当时觉得很对。其实Activity是一个组件。组件是可以调用的基本功能模块,Android应用程序就是由组件组成的。
Android系统有四个重要的组件,分别是Activity、Service、BroadcaseReceiver和ContentProvider

  • Activity:程序显示的界面,也是交互的界面,一个程序当然可以有多个界面。表现形式:全屏窗体,非全屏悬浮窗体,对话框。

  • Service:这个组件用于没有用户界面,长时间在后台运行的应用。

  • BoardcaseReceiver:用来接受并响应广播消息的组件。可以通过启动Activity或者Notification通知用户接收到重要信息。Notification能够通过多种方法提示用户,包括闪动背景灯、震动设备、发出声音或在状态栏上放置一个持久的图标。

  • ContentProvider:Android系统提供的一种标准的共享数据的机制,应用程序可以通过ContentProvider组件访问其他应用程序的私有数据。

3.Activity生命周期

这才是本文重头戏,Activity生命周期!!!当然,所有组件都有其生命周期,我主要讨论Activity生命周期,为什么?哪有那么多为什么?!
我把Activity生命周期分为4状态9函数3周期。
Activty从启动到销毁表现为四个状态:活动、暂停、停止、非活动,遵循先进先出的栈:

  • 活动状态:Activity在用户界面中最上层,用户可见并可交互。ps:什么进程?
  • 暂停状态:Activity被部分遮挡,不在最上层,用户可见但不可以交互。ps:什么进程?
  • 停止状态:Activity完全不能被用户看见,被其他Activity遮挡。ps:什么进程。
  • 非活动状态:不在以上三种状态的Activity。很模糊,不管它!

Activity状态图

activity状态栈图

Activity生命周期有9个事件回调函数:

  • onCreate(): Activity启动后第一个被创建的函数,常被用来初始化。
  • onStart(): Activity被显示在屏幕上时被调用,用来初始化或启动与更新界面相关的资源。
  • onRestoreInstanceState(): 恢复onSaveInstanceState()保存的Activity状态信息,在onStart()和onResume ()之间被调用。
  • onResume(): 当Activity能和用户交互时被调用,此时Activity在栈的顶层。
  • onPause(): 当Activity进入暂停状态时被调用,用来保存持久的数据和释放占用的资源。
  • onStop(): 当Activity进入停止状态时被调用,一般用来暂停或停止一切与更新用户界面相关的线程、计时器和服务。
  • onRestart(): 当Activity从停止状态进入活动状态,调用此函数,
  • onDestory(): 当Activity进入非活动状态,及被销毁时被调用。
  • onSaveInstanceState(): 当Android系统因资源不足终止Activity前调用该函数,用以保存Activity的状态信息,供onRestoreInstanceState()或onCreate()恢复之用。
    Activity事件回调函数调用顺序

如果仔细研究了上图的,想必一定发现了我说的那三个生命周期:

  • 全生命周期: 从onCreate()初始化到onDestroy()释放,激进点的会不调用onDestroy()直接kill掉进程。
  • 可视生命周期: 从onStart()显示界面到onStop()界面不可见。
  • 活动生命周期: 这个周期开始于onResume(),结束于onPause(),Activity在栈的最上层,能与用户交互。因为在Activity的状态变换过程中onResume()和onPause()经常被调用,因此这两个函数中应使用更为简单、高效的代码。

小结:ok,对生命周期的认识就到此结束了。本来想举个例子,通过LogCat的输出来查看生命周期的具体运行,但,夜深了,该睡了,睡了,了。Zzzzzzz


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值