开始我们先来回顾一下Activity的基础知识:
Activity是应用程序的表现层,应用程序中可以包含多个Activity,它们之间可以相互跳转,来达到手机屏幕的切换。Activity通过View来实现应用程序的图形用户界面GUI,手机用户直接通过GUI和应用程序进行交互,应用程序通过GUI向用户显示信息,用户通过GUI向应用程序发出指令和响应。

Activity的使用步骤:

 1.创建Activity,创建类继承Activity或其子类2.配置Activity:必须显式在Manifest配置文件<application>中为其添加<activity>,为<activity>配android:name属性,值为.className
如一个Android工程中名MainActivity的Activity配置为:```<activityandroid:name=".MainActivity"android:label="@string/app_name"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity>```
其中<intent-filter>标签为标记当前Activity为入口Activity。

Activity栈

Android中所有的Activity都被保存在Activity栈中,当启动一个新的Activity时,这个Activity就被压入栈的顶部,如果用 户通过“返回”键返回上一个Activity的界面,那么栈顶的Activity就会被弹出,之前位于栈顶的第二个Activity就会变成为新的栈顶Activity,系统总是会显示栈顶的Activity给用户

Activity生命周期

--Activity的生命周期是指一个Activity从创建到销毁的过程,期间会经过多个状态的变化,每次状态的变化都会触发相应的回调方法
--根据Activity不同的状态,将Activity生命周期分为四个阶段:1.运行状态:可见,并可操作onCreate-onStart-onResume onRestart-onStart-onResume2.暂停状态:可见,但不可操作onPause3.停止状态:不可见,不可操作onStop4.销毁状态onDestory--关于各个回调方法被调用的时机:
onCreate():Activity在实例化过程被调用,进而创建工作。只会调用一次,一般创建界面没做一些数据的初始化工作
onStart()  :Activity启动过程的回调函数
onResume():恢复Activity时被回调,onStart()方法后一定会回调该方法
onPause():暂停Activity时被回调(Activity失去操作焦点,但可见),应在这里保存一些数据
onStop():停止Activity时被回调(Activity失去操作焦点,不可见)
onDestory():销毁Activity时被回调,该方法只会被调用一次(回收资源)这是被kill前最后一个被调用的方法
onRestart():活动由停止状态变为运行状态之前调用,也就是活动被重新启动-- Activity生命周期的三种状态:1.Activity完整的生命周期:指从调用onCreate()创建Activity到最终调用onDestroy()销毁Activity的过程onCreate()-->onStart()--->onResume()-->onPause()-->onStop()-->onDestory()2.可见Activity的生命周期:指从调用onStart()/onRestart()开始到调用onStop()结束的过程onStart()/onRestart()-->onResume()-->onPause-->onStop()3.活跃Activity的生命周期:指从调用onResume()到调用onPause()暂停的过程onResume()-->onPause()--下面详细讲解几个过程:1.启动Activity:系统会先调用onCreate方法,然后调用onStart方法,最后调用onResume,Activity进入运行状态2.当前Activity被其他Activity覆盖其上或被锁屏,系统会调用onPause方法,暂停当前Activity的执行3.当前Activity由覆盖状态回到前台或解锁屏,系统会调用onResume方法,再次进入运行状态4.当前Activity转到新的Activity界面或按Home键回到主屏,自身退居后台:系统会先调用onPause方法,然后调用onStop方法,进入停止状态5.用户后退回到此Activity,系统会先调用onRestart方法,然后调用onStart方法,最后onResume方法重新进入运行状态6.当前Activity处于覆盖状态或者后台不可见状态,即第2步和第4步,系统内存不足,杀死当前Activity,而后用户退回到当前Activity,再次调用第1步方法7.用户退出当前Activity,系统会先调用onPause方法,然后调用onStop方法,最后调用onDestory方法结束当前Activity

Activity的启动模式:

Activity启动方式有四种,分别是:
standard        默认模式       可有多个实例,允许多个相同的Activity叠加
singleTop       栈顶单例       可有多个实例,不允许多个相同的Activity叠加,相同时调用onNewIntent方法
singleTask      栈内单例       只有一个实例,重复启动时会把task中在其之上的其它Activity destory掉并调用onNewIntent方法
singleInstance  全局单例       只有一个实例,并且这个实例独立运行在一个task中,这个task中只有这个实例,不允许有别的Activity存在

Activity启动Activity的两种方法:

 1.通过startActivity(Intent inrent)启动Activity传递参数的方式:putExtra("key",values);或者:putExtra(Bundle);获取参数的方式:putXxxExtra(key) 或者 getExtras().getXxx()     Xxx为数据类型2.通过startActivityForResult(Intent intent,int requestCode):以指定的请求码启动Activity,而且程序将会等待新启动Activity的结果一般情况下,我们只需要保证requestCode>-1即可,这样它都能收到result.但是如果在Activity中,能够跳转到多个Activity,并且要接受到多个activity中的信息的时候,我们就要注意当使用startActivityForResult()的时候,给每一个不同的Activity一个独立的requestCode,那么在你接收到result的时候就可以根据这个参数来判断结果是个Activity返回来的了启动的Activity重写onActivityResult()被启动的Activity返回数据:setResult(int,Intent)

onSaveInstanceState和onRestoreInstanceState触发的时机:

当某个activity变得“容易"被系统销毁时,该Activity的onSaveInstanceState就会被执行,除非该Activity是被用户主动销毁的,例如用户按Back键时何为“容易”?意思就是该Activity还没有被销毁,仅仅可能被销毁,有这么几种情况:1.当用户按下HOME键时:系统不知道你按下HOME键后要运行多少其他的程序,也不知道activity是否会被销毁,所以这时系统会调用onSaveInstanceState方法让用户有机会保存某些非永久性的数据,以下几种情况的分析都遵循该原则2.长按HOME键,选择运行其他的程序时3.按下电源按键(关闭屏幕显示)时4.从Activity中启动一个新的Activity时5.屏幕方向切换时,例如从竖屏切换到横屏:在屏幕切换之前,系统会销毁该activity,在屏幕切换之后,系统会自动地创建activity,所以会执行onSaveInstanceState方法onSaveInstanceState的调用遵循一个重要原则,即当系统“未经你许可”时销毁了你的activity,则onSaveInstanceState会被系统调用。onRestoreInstanceState方法需要注意的是,它和onSaveInstanceState方法不一定是成对被调用的,onRestoreInstanceState被调用的前提是,Actvity确实被系统销毁了,如果仅仅是停留在刘可能被销毁的情况下,该方法不会被调用。

好了,今天Android四大组件之一的Activity就先写到这里了,欢迎大家一起交流学习。

Activity详解Activity的使用步骤、生命周期及其启动模式、启动方法相关推荐

  1. Activity详解—— Activity基本用法

    Activity的xml配置 Activity在使用时候必须在xml中设置,否则在启动Activity时候会找不到当前的类.下面配置是常用的作为程序入口的Activity配置.如下设置后,点击应用启动 ...

  2. 详解.NET Core 依赖注入生命周期

    前言 .NET Core 自带依赖注入框架,支持三种不同生命周期的注入模式: Singleton 单例模式 Scoped 区域模式 Transient  瞬时模式 但是常常不知道什么时候使用哪种模式才 ...

  3. android Fragments详解六:处理fragement的生命周期

    把条目添加到动作栏 你的fragment们可以向activity的菜单(按Manu键时出现的东西)添加项,同时也可向动作栏(界面中顶部的那个区域)添加条目,这都需通过实现方法onCreateOptio ...

  4. alert 返回页面 刷新_详解 HTML 页面原生的生命周期事件

    DOMContentLoaded,load,beforeunload,unload HTML 页面的生命周期包含三个重要事件: DOMContentLoaded -- 浏览器已完全加载 HTML,并构 ...

  5. [KANZI]详解Kanzi One应用程序生命周期事件

    添加启动逻辑 你可以用以下逻辑去在应用中定义你的启动逻辑 Kanzi在启动应用程序后立即调用Application::onStartup() 函数一次,再它加载初始化UI内容之前,可以添加需要修改已初 ...

  6. Android学习之详解Activity的生命周期

    Activity Activity作为Android的四大组件之一,可见其地位非同寻常,官网介绍: 移动应用体验与桌面体验的不同之处在于,用户与应用的互动并不总是在同一位置开始,而是经常以不确定的方式 ...

  7. Android 之 Activity 详解

    最近在学习Android开发方面的知识,整理了一下关于Android中Activity方面的知识,也算是对自己学的知识进行了总结.Activity 在 Android开发中有着极其重要的位置,Acti ...

  8. [安卓基础] 009.组件Activity详解

    组件Activity详解 这篇文章学到得内容 1.什么是Activity 2.Activity的生命周期 3.如何保存Activity的状态 4.Activity之间切换时,相互之间生命周期的执行顺序 ...

  9. Android9.0 Launcher启动Activity详解(一)

    一.开始 Launcher中点击应用图标启动Activity,其开始方法是 public boolean startActivitySafely(View v, Intent intent, Item ...

最新文章

  1. OpenERP 7.0版本发布
  2. linux命令:fsck
  3. Java之【线程通信】--标志位练习2
  4. 关于SAP的“Sort key 排序码”
  5. mysql数据库入门教程(13):存储过程
  6. 笔记本鼠标乱跑!不知何故!
  7. unity 导入gltf_Unity3D使用glTF格式三维文件,glTF在unity中如何呈现,glTF导入unity
  8. android MVP框架
  9. Asp.net上传文件至目录
  10. sql 判断连续数字
  11. PHP实现下载远程图片保存到本地的方法
  12. csgo显示连接任何官方服务器失败,csgo连接任意官方服务器失败怎么办_csgo连接官方服务器失败解决方法...
  13. java在控制台打印心形图案
  14. 2021基于Debian的All in One(NAS+软路由)配置教程
  15. ClickHouse MergeTree二级索引/跳数索引
  16. 弱爆了的鹊桥专用查询接口:taobao.tbk.dg.item.coupon.get( 好券清单API【导购】)接口
  17. 概率神经网络 PNN
  18. 菜鸟html在线运行,菜鸟操作—HTML5制作影视简介
  19. SQL 修改列的长度
  20. 微服务网关之一 介绍

热门文章

  1. 高漫数位板1060PRO 8192级的驱动下载与安装
  2. 视频号计划,撑得起微博下一个十年?
  3. 软件测试工作流程规范
  4. windows server中opencv运行过程中MF.dll/MFReadWrite.dll/MFPlat.DLL文件丢失问题解决
  5. 手机app邮箱如何和学校邮箱自动同步
  6. android 读写sd卡的权限设置
  7. 带你玩东方系列(视频版)游戏链接
  8. 非华为电脑多屏协同安装最新的电脑管家
  9. 计算机网络习题:第三单元
  10. python迭代法求解方程_第一部分:趣味算法入门;第六题牛顿迭代法求一元三次方程的根...