1、Activity的生命周期

情形一、一个单独的Activity的正常的生命过程是这样的:onCreate->onStart->onPause->onStop->onDestroy。例如:运行一个Activity,进行了一些简单操作(不涉及页面的跳转等),然后按返回键结束。

情形二、有两个Activity(a和b),一开始显示a,然后由a启动b,然后在由b回到a,这时候a的生命过程应该是怎么样的呢(a被b完全遮盖)?

a经历的过程为onCreate->onStart->onResume->onPause->onStop->onRestart->onStart->onResume。这个过程说明了图中,如果Activity完全被其他界面遮挡时,进入后台,并没有完全销毁,而是停留在onStop状态,当再次进入a时,onRestart->onStart->onResume,又重新恢复。

情形三、基本情形同二一样,不过此时a被b部分遮盖(比如给b添加个对话框主题 android:theme=”@android:style/Theme.Dialog”)

a经历的过程是:onCreate->onStart->onResume->onPause->onResume

所以当Activity被部分遮挡时,Activity进入onPause,并没有进入onStop,从Activity2返回后,执行了onResume

情形四、 打开程序,启动a,点击a,启动AlertDialog,按返回键从AlertDialog返回。

a经历的过程是:onCreate->onStart->onResume

当启动和退出Dialog时,Activity的状态始终未变,可见,Dialog实际上属于Acitivity内部的界面,不会影响Acitivty的生命周期。

2、Service的生命周期

使用context.startService() 启动Service

其生命周期为context.startService() ->onCreate()- >onStart()->Service running–>(如果调用context.stopService() )->onDestroy() ->Service shut down

如果Service还没有运行,则android先调用onCreate()然后调用onStart();
如果Service已经运行,则只调用onStart(),所以一个Service的onStart方法可能会重复调用多次。

调用stopService的时候直接onDestroy,
如果是调用者自己直接退出而没有调用stopService的话,Service会一直在后台运行。
该Service的调用者再启动起来后可以通过stopService关闭Service。

所以调用startService的生命周期为:onCreate –> onStart(可多次调用) –> onDestroy

对于bindService()启动Service会经历:
context.bindService()->onCreate()->onBind()->Service running–>onUnbind() -> onDestroy() ->Service stop

onBind将返回给客户端一个IBind接口实例,IBind允许客户端回调服务的方法,比如得到Service运行的状态或其他操作。
这个时候把调用者(Context,例如Activity)会和Service绑定在一起,Context退出了,
Srevice就会调用onUnbind->onDestroy相应退出。

所以调用bindService的生命周期为:onCreate –> onBind(只一次,不可多次绑定) –> onUnbind –> onDestory。
一但销毁activity它就结束,如果按home把它放到后台,那他就不退出。

PS:
在Service每一次的开启关闭过程中,只有onStart可被多次调用(通过多次startService调用),
其他onCreate,onBind,onUnbind,onDestory在一个生命周期中只能被调用一次。

Activity和Service的生命周期-----Activity学习笔记(一)相关推荐

  1. Activity生命周期的学习和验证

    1.引子 Activity就像是英文词汇本的Abandon,开篇就能碰到,关于Activity生命周期的博客教程非常多,侧面说明Activity非常重要,其中的Activity的生命周期又是重中之重, ...

  2. 【安卓 R 源码】Activity 启动流程及其生命周期源码分析

    1. Activty 的生命周期 activity的生命周期 oncreate()->onstart()->onResume()->onPause()->onStop()-&g ...

  3. Android入门之Activity的创建及生命周期方法

    Activity简介 Activity用于提供可视化用户界面的组件, 可以与用户进行交互来完成某项任务. 一个Activity对象代表一个单独的窗口. 一个应用程序中会有一个Activity被指定为主 ...

  4. Activity生命周期(Activity弹出Dialog会触发Activity生命周期吗)

    Activity弹出Dialog对生命周期有什么影响_weixin_43976036的博客-CSDN博客_activity弹出dialog生命周期Activity弹出 Dialog 对生命周期有什么影 ...

  5. Android复习10【Service与Thread的区别、Service的生命周期、Service生命周期解析(相关方法详解、启动方式的不同、绑定)、音乐播放器+服务】

    音乐播放器Android代码下载:https://wws.lanzous.com/ifqzihaxvij 目   录 Service与Thread的区别 Service的生命周期 Service生命周 ...

  6. 18_Android中Service的生命周期,远程服务,绑定远程服务,aidl服务调用,综合服务案例,编写一个应用程序调用远程支付宝远程服务场景

    ============================================================================ 服务的生命周期: 一.采用start的方式开始 ...

  7. 【Android】Android Service的生命周期

    Managing the Lifecycle of a Service 原文来自: http://www.cnblogs.com/mengdd/archive/2013/03/24/2979944.h ...

  8. Android开发笔记(四十一)Service的生命周期

    与生命周期有关的方法 onCreate : 创建服务 onStart : 开始服务,Android2.0以下版本使用 onStartCommand : 开始服务,Android2.0及以上版本使用.该 ...

  9. (一)Service的生命周期和两种启动方式

    Service 一.概念 Service,也是Android四大组件之一.对照Activity的概念,Service属于后台运行的进程,并不需要界面,可以在后台长期运行,适合做比如播放音乐,下载等任务 ...

最新文章

  1. 苹果系统的优点和缺点
  2. 【线上分享】基于AI的超分辨技术在RTC领域的技术难点与挑战
  3. Azure 内容审查器之羞羞图审查
  4. 如何使用confd+ACM管理Nginx配置
  5. android init.d脚本,◇添加init.d脚本支持教程贴◇
  6. 怎么取消苹果手机自动续费_知乎会员怎样取消自动续费
  7. java curl get_如何从Java中的curl get请求获取文件?
  8. FreeBSD之netgraph简要解析
  9. WindowsForm如何实现类似微软project软件的甘特图?
  10. sae java 开发环境_SAE本地环境与真实环境的差别
  11. 扇贝有道180930每日一句
  12. 定向寻宝亲子活动设计思路和实操(附2019最新教程)
  13. 计算机与酒店管理大学论文,酒店管理系统的设计与实现
  14. 百度智能api接口汇总
  15. SPI 读取不同长度 寄存器_几种常用的总线设计:UART/SPI/I2C
  16. 不想做成年人?看到第一张就哭了,满满的回忆
  17. Linux rm/rmdir 命令使用介绍
  18. 在centos7.7安装搜狗输入法踩坑日记
  19. C1认证学习三(数据校验)
  20. Windows10 会不会成为微软的新起点?

热门文章

  1. HQuery中html结构及文本的修改
  2. 今天刚学了jQuery ,今天利用jQuery的语法一行来写出选项卡
  3. vue项目使用mint-ui库
  4. 从后端获取数据然后在页面处理技巧
  5. 华为鲲鹏arm架构linux服务器安装mysql教程
  6. 直观判断图像是否可以被实时处理
  7. Nginx综合介绍以及配置文件详解
  8. Linux环境下增加swap交换分区
  9. mysql的分库分表
  10. 调用接口处理时间过长,前端访问超时解决方案