资讯专栏INFORMATION COLUMN

Acticity的生命周期和启动模式

罗志环 / 2002人阅读

摘要:典型情况下的生命周期表示创建,在这个方法中可以做一些初始化的操作,如加载界面布局资源,初始化所需的数据表示重新启动,正常情况下,当前从不见到可见,就会调用此方法。启动模式的设置在文件中,通过配置的属性设置。

典型情况下的生命周期

onCreate
表示创建Acticity,在这个方法中可以做一些初始化的操作,如加载界面布局资源,初始化Activity所需的数据

onRestart
表示重新启动Activity,正常情况下,当前Activity从不见到可见,就会调用此方法。

onStart
表示启动Acticity,这个时候Activity可见,但是不能进行UI交互。

onResume
表示Activity出现到前台,可与之交互。

onPause
表示Activity正在暂停,接着会执行onStop。这个方法中可以做一些数据存储,停止动画,但不能耗时操作,不然Activity之间的切换会有卡顿,不自然。

onStop
表示Activity马上就会停止,可以做一些稍微耗时的回收工作。

onDestroy
表示Activity即将销毁,在这个方法中做一些回收工作和资源的释放。

两个Acticity之间切换的生命周期:第一个Activity执行onPause后,第二个Activity执行onCreate -> onStart ->onResume,第一个Activity再执行onStop。

异常情况下的生命周期

1、资源相关的系统配置发生改变导致Activity被杀死并重新创建:
正常周期依旧会被调用,但是会调用onSaveInstanceState,当重新创建后会调用onRestoreInstanceState,我们可以利用这个特性来保存恢复数据。

2、资源不足导致低优先级的Activity被杀死:

  • 前台Activty -- 正在和用户交互的Activity,优先级最高
  • 可见但非前台Activity
  • 后台Activity -- 已经被暂停的Activity,比如执行的onStop,优先级最低。

为了防止被系统杀死,后台工作一般放在Service中执行,防止系统轻易杀死。

Activity启动模式

当应用运行起来后就会开启一条线程,线程中会运行一个任务栈,当Activity实例创建后就会放入任务栈中。Activity启动模式的设置在AndroidManifest.xml文件中,通过配置Activity的属性android:launchMode=""设置。

1.Standard模式(默认)
我们平时直接创建的Activity都是这种模式的Activity,这种模式的Activity的特点是:只要你创建了Activity实例,一旦激活该Activity,则会向任务栈中加入新创建的实例,退出Activity则会在任务栈中销毁该实例。

2.SingleTop模式
这种模式会考虑当前要激活的Activity实例在任务栈中是否正处于栈顶,如果处于栈顶则无需重新创建新的实例,会重用已存在的实例,否则会在任务栈中创建新的实例。

3.SingleTask模式
如果任务栈中存在该模式的Activity实例,则把栈中该实例以上的Activity实例全部移除,调用该实例的newInstance()方法重用该Activity,使该实例处於栈顶位置,否则就重新创建一个新的Activity实例。

4.SingleInstance模式
当该模式Activity实例在任务栈中创建后,只要该实例还在任务栈中,即只要激活的是该类型的Activity,都会通过调用实例的newInstance()方法重用该Activity,此时使用的都是同一个Activity实例,它都会处于任务栈的栈顶。此模式一般用于加载较慢的,比较耗性能且不需要每次都重新创建的Activity。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/2967.html

相关文章

  • Android之Activity全面解析

    摘要:已暂停另一项是在前台并具有焦点,但这一项仍然可见。暂停的完全处于活动状态对象保留在内存中,它保留所有状态和成员信息,并保持附加到窗口管理器,但可以在极低内存情况下被系统杀死。的可见生命周期的可见生命周期发生在呼叫和呼叫之间。 前言 基于最近要准备去面试,特意系统的复习了下Android基础,看到Activity这块时,发现很多都忘了,而且之前也没有系统的学习和写笔记记录,所以,特此写下...

    YJNldm 评论0 收藏0
  • Android四大组件之Activity全解析

    摘要:该始终是其唯一仅有的成员,由此启动的任何,如果没有指定返回栈名称,则新启动的放入默认的返回栈如果指定了返回栈名称,则将新启动的放入指定的返回栈中。 1. 简介        本篇不针对于新手,而是对于Activity中一些常识或者问题进行总结。Activity是Android四大组件之一,为用户提供与系统交互的界面,每一个应用都有一个或者多个Acticity,这样会有各种各样的细节问题...

    leone 评论0 收藏0
  • Android四大组件之Activity全解析

    摘要:该始终是其唯一仅有的成员,由此启动的任何,如果没有指定返回栈名称,则新启动的放入默认的返回栈如果指定了返回栈名称,则将新启动的放入指定的返回栈中。 1. 简介        本篇不针对于新手,而是对于Activity中一些常识或者问题进行总结。Activity是Android四大组件之一,为用户提供与系统交互的界面,每一个应用都有一个或者多个Acticity,这样会有各种各样的细节问题...

    haobowd 评论0 收藏0
  • 一、Activity生命周期启动模式

    摘要:的启动模式标准模式。如果新已经位于任务栈的栈顶,那么此不会被重新创建,同时它的方法会被回调,通过此方法的参数,我们可以取出当前请求的信息。如果新的实例已存在但不是位于栈顶,那么新的仍然会重新创建。1、Activity的生命周期 1.1、典型情况下的生命周期 在有用户参与的情况下,Activity所经过的生命周期的改变。 Activity会经历如下生命周期: onCreate-onRest...

    evin2016 评论0 收藏0
  • Activity 总结

    摘要:俩个和,那么启动的过程中,的与的哪个先执行新启动之前,栈顶的需要先后,新的才能启动的。如果新的实例已经存在但不位于栈顶,那么新的仍然会被重新创建。如果启动的位于当前任务栈中,启动该时,会把该切换到栈顶后,还将导致它上边的全部出栈。 Activity 是 Android 四大组件之一,每个 Activity 都会获得一个用于绘制其用户界面的窗口,用户可与其进行交互。以下来总结 Activ...

    KavenFan 评论0 收藏0

发表评论

0条评论

罗志环

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<