学习android已经一个多月了,大米发现android中许多东西都涉及生命周期这玩意儿,刚开始没有太在意,觉得生命周期嘛,就跟web软件、win软件一样,比较简单。不过到现在为止,我才发现生命周期在android的开发中是那么的重要,于是乎我决定汇总一下android中的一些关于生命周期的内容。以下的只是都是我通过写代码,或者通过看网络文章了解的,一方面可能不是很全,一方面可能有些地方不是很正确,所以如果有什么不对的地方请各位卓友告诉我,小弟感知不尽T T.

1,Activty生命周期

2,service生命周期

3,BroadcastReceiver生命周期

4,Thread生命周期

1,Activity的生命周期

一个Activity就相当于一个单独的界面,类似于web中的一张网页。

Activity一共有四个状态:

    Active:在屏幕最前端,处于栈的最顶端

    Paused:被一个Activiy覆盖,比如Dialog,仍然可见

    Stoped:被一个Activity覆盖,不可见

    Killed:被系统杀死

Activity的生命周期有七个过程:

OnCreate():

当Activity第一次加载时执行。另外当Activity被OnDestroy后,重新加载任务的时候会重新被执行。

OnStart():

OnCreate后就会执行OnStart。另外当activity被交换到后台后,在用户从新查看窗体前已经过去了一段时间,窗体已经执行了onstop()事件,但是窗体和其所在进程并没有被销毁,那么用户再次查看窗体的时候就会跳过oncreate而执行onstart()事件。

OnResume():

Onstart()后就执行onresume()事件。另外当activity被交换到后台后,用户重新查看时,如果既没有执行过OnDestroy,也没有执行过onstop事件,那么会跳过oncreate()和onstart()事件,直接执行onresume();

OnPause():

窗体交换到后台的时候执行onpause()事件

OnStop():

Onpause事件后就执行onstop()事件。当用户一段时间没有再次重新查看该窗体,则onstop事件就会执行。或者用户直接按了back按键,也就执行onstop()事件。

OnDestroy():

Activity销毁的时候执行ondestroy()事件。在窗体的onstop()事件之后,如果没有再次查看该窗体,activity则会被销毁


程序正常启动:onCreate()->onStart()->onResume();
正常退出:onPause()->onStop()->onDestory()
一个Activity启动另一个Activity: onPause()->onStop(), 再返回:onRestart()->onStart()->onResume()
程序按back 退出: onPause()->onStop()->onDestory(),再进入:onCreate()->onStart()->onResume();
程序按home 退出: onPause()->onStop(),再进入:onRestart()->onStart()->onResume();

2,Service的生命周期

首先启动service的方式有两种,不同的启动方式使其生命周期有所不同,如下:

Context.startService():

调用者和服务之间没有联系,即使调用者退出了,服务依然在进行【onCreate()- >onStartCommand()->startService()->onDestroy()】,注意其中没有 onStart()(PS:sdk2.0以后就不推荐用这个方法了),主要是被onStartCommand()方法给取代了。

  如果service还没有运行 那么会先执行onCreate(),接着执行onStartCommand(),但是如果service已经运行了那么就直接执行onStartCommand()方法了,而不会再次执行onCreate()方法了。

Context.bindService():

调用者和绑定者绑在一起,调用者一旦退出服务也就终止了【onCreate()->onBind()->onUnbind()->onDestroy()】

bindService()方法的具体使用可以参照下面这个博客哦

Android中BindService方式使用的理解

Service生命周期总结:

  service是没有界面,并且它是在后台运行的,所以免去了onPause、OnStop、OnResume这些方法。

 

3,BroadcastReceiver的生命周期

  BroadcaseReceiver用于接收和处理广播通知,多数的广播是系统发起的,如地域变换、电量不足、来 电来信等。程序也可以播放一个广播。程序可以有任意数量的 broadcast receivers来响应它觉得重要的通知。broadcast receiver可以通过多种方式通知用户:启动activity、使用NotificationManager、开启背景灯、振动设备、播放声音等,最 典型的是在状态栏显示一个图标,这样用户就可以点它打开看通知内容。

通常我们的某个应用或系统本身在某些事件(电池电量不足、来电来短信)来临时会广播一个Intent出去,我们可以利用注册一个Broadcast Receiver来监听到这些Intent并获取Intent中的数据。

  所以其实BroadcaseReceiver处理广播的过程不能严格算是生命周期,而是一个动作过程,在这个过程中它会调用onReceive方法,当这个方法执行到最后,BroadcaseReceiver的这个过程也就结束了。

4,Thread生命周期

  new创建一个线程后,该线程处于新建状态

   当线程对象调用了start()后,该线程处于就绪状态

   处于就绪状态的线程开始执行run方法时,该线程处于运行状态

   这个时候如果线程调用了sleep(),该线程就处于阻塞状态

   run()方法执行完成后,该线程处于死亡状态

以上就是线程的生命周期,不过我问了几个开发了几年android的技术关于线程的生命周期,这边我再补充一下:

  若是在服务启动的话,享有的最大生命周期与服务的生命周期相同

  若是由主线程创建的话,则享受的最大生命周期与当前所在activity的相同生命周期相同

总结:本来还想具体写一下android多线程中thread以及handle的一些内容,后来想想还是重新写一篇比较好。

更多相关文章

  1. 进程和线程模型(android)
  2. android进程和线程模型
  3. Android中使用Handler和异步任务(AsyncTack)来为UI线程执行费时操
  4. 【读书笔记】【Android 开发艺术探索】第11章Android 的线程和线
  5. Java Android 线程池
  6. android 线程(一)
  7. 【Android 初学】11、关于Android当中的线程(初级)

随机推荐

  1. Android蓝牙
  2. Android中AnimationDrawable,Animator和A
  3. 我想邀请你和我一起写Android(福利回赠)
  4. Android(安卓)开发笔记 第三季 FragmentP
  5. Android2.1 短信应用解析
  6. android mtk平台内置apk,可卸载恢复出厂设
  7. android设备管理器.md
  8. android系统学习笔记八
  9. Android, BaseAdapter 处理大数据量时的
  10. eoeandroid社区转发