`
huihui920823
  • 浏览: 36800 次
  • 性别: Icon_minigender_1
  • 来自: 济南
文章分类
社区版块
存档分类
最新评论

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

 
阅读更多

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在一个生命周期中只能被调用一次。

<script type="text/javascript"> $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('<ul/>').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('<li/>').text(i)); }; $numbering.fadeIn(1700); }); }); </script>
分享到:
评论

相关推荐

    Android学习笔记-Activity篇

    Android学习笔记-Activity篇 Contents Android学习笔记-Activity篇 1 一、activity创建: 1 二、在manifest.xml中声明activity: 1 三、启动activity 1 3.1 启动不带返回结果的Activity 1 3.2 启动带有返回结果的...

    android 学习笔记7-页面跳转 Activity启动 生命周期 activity数据传递

    1、创建一个自己的Activity 2、启动activity-显示启动和隐式启动: 3、隐式启动自己的activity 4、获取隐启动传递过来的data数据 5、显示启动传递数据 6、禁用掉横竖屏切换 7、开启activity获取返回值-...

    Android Activity学习笔记

    本文的是深入重点讲解Activity,主要Activity生命周期、Activity之间数据交互、Activity启动模式、Task和BackStack。

    Activity生命周期

    Android初学者的学习笔记。Activity的生命周期的简要了解。

    android学习笔记

    3.android学习笔记--activity生命周期&handler使用 4.android学习笔记--HandlerThread和Bundle 5.android学习笔记--SQLite 6.android学习笔记--下载文件 7.android学习笔记--Content Provider 8.android学习笔记--...

    Android学习笔记

    activity生命周期 docs/index.html 1、onCreate:第一次被启动、 2、onStart:activity可视时调用、 3、onResume:activity获得用户焦点是被调用、 4、onPause:启动另外一个activity时被调用、 5、onStop:另一个...

    Android 学习笔记(1)--永远不变的Hello World

    让button来说hello word 、让菜单say hello、初识Activity、Activity的生命周期

    NeverNote:一个简单的印象笔记 API 消费者应用

    5.- 以一个 Activity 和 Fragment 为基础创建了一个新的 Android Studio 项目。 6.- 将这个新项目与 GitHub 存储库同步。 7.- 检查 Evernote SDK 演示应用程序和代码,以大致了解其行为。 它有自己的模型和工厂实现...

    移动开发Android学习(one)

    新建项目 这里选择基本的模板empty activity ...activity的生命周期 所有的布局文件都是写在xml里的(展开layout文件夹后,有个activity_main.xml) 运行 新建一个布局文件 新建一个LinearLayout(线性布局)

    java8集合源码分析-AndroidLearn:Android学习笔记

    生命周期 启动模式 ActivityManagerService PMS Art/Dalvik Http Http WebSocket Udp Kotlin 算法 快速排序 链表 重新排版 RxJava2 Glide GreenDao 其他 反编译 Hook 动态加载 编译构建 设计模式 代理模式 装饰者...

    OPhone应用开发专题——【第一季】

    OPhone应用开发专题——【第一季】...第一章、Activity (生命周期等) 第二章、模拟器:Avd创建,adb命令 第三章、Ophone布局 Layout 第四章、开发者学习笔记——View、Canvas、bitmap 第五章、综合应用贪吃蛇实例讲解

    java安卓仿微信聊天软件源码-AndroidDemo:整理一份自己学习android的合集

    整理一份自己学习android的合集(现在整理下以前的笔记,写作一个demo作为总结,也是查漏补缺,同时可以比较下以前与现在自己的能力提升了多少!) 从2018/1/23开始 新建项目,计划——开始整理; 2018/1/26, 常用...

Global site tag (gtag.js) - Google Analytics