Android基础之Activity生命周期(一)

这篇具有很好参考价值的文章主要介绍了Android基础之Activity生命周期(一)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Activity是Android四大组件之一、称为之首也恰如其分。

Activity直接翻译为中文叫活动。在Android系统中Activity就是我看到的一个完整的界面。

界面中看到的TextView(文字)、Button(按钮)、ImageView(图片)都是需要Activity来承载的。

总结一句话,Activity负责界面的呈现和用户的交互。

接下来看下Activity的基础---生命周期。何为声明周期--就是一个Activity从创建到销毁的整个过程。

这一过程有几个很重要的生命周期方法,是必须要掌握的。Activity的创建和声明周期的管理,都是交给系统的ActivityManagerService进行管理的。AMS相关的知识随着课程的深入会逐步讲解。

现在看下Activity基础,生命周期

Android基础之Activity生命周期(一),Android开发从基础到高级,android

Activity一个完整的生命周期,通过starActivity()创建到调用finish()方法销毁,会执行6个周期函数。

startActivity创建执行的生命周期函数是:

Android基础之Activity生命周期(一),Android开发从基础到高级,android

当Activity退出被销毁时执行的生命周期函数:

Android基础之Activity生命周期(一),Android开发从基础到高级,android

 通常我们在onCreate中作初始化的工作,初始化View,设置监听等准备工作。

onResume被调用时,Activity就正常显示到屏幕上了。

当Activity被销毁时,在onDestory中做释放资源的工作,防止内存泄漏的发生。

如果在当前Activity开启一个新的Activity,然后又退出新的Activity后又回到前一个Activity,他的生命周期函数是哪样的?

开启新的Activity,会调用前一个Activity的onPause onStop方法。回到前一个Activity时,会调用onRestart、onStart、onResume方法。

Android基础之Activity生命周期(一),Android开发从基础到高级,android

如果在当前Activity开启一个新的Activity,然后又退出新的Activity后又回到前一个Activity,那么他们两个的生命周期函数又分别是哪样的呢?

Android基础之Activity生命周期(一),Android开发从基础到高级,android

从以上生命周期函数执行的顺序可以看出,无论是开启新的NewActivity,还是回到原来的MainActivity,都会先调用当前Activity的onPasue方法,然后执行另外一个Activity的生命周期函数,直到onResume方法被调用,然后再执行原来Activity未完成的生命周期函数。

这些生命周期函数的调用,都是受ActivityManagerService管理调度的。他们系统为啥要这样做呢?思考一下。

绍屏幕旋转时,Activity生命周期函数的调用过程。

正常创建执行的生命周期函数:

Android基础之Activity生命周期(一),Android开发从基础到高级,android竖屏切换横屏时:

Android基础之Activity生命周期(一),Android开发从基础到高级,android

横屏再切换为竖屏时 :

Android基础之Activity生命周期(一),Android开发从基础到高级,android

 从log中可以看出横竖屏切换时,会发生Activity的重建。并且调用了onSaveInstanceState和onRestoreInstanceState两个函数。从名字可以看出来,一个是保存实例状态,另外一个是恢复实例状态。这两个函数的目的就是为了在发生Activity重建时,可以恢复想要保存的数据。

Android基础之Activity生命周期(一),Android开发从基础到高级,android

但是在实际的项目开发中,很少用到。因为我可以通过一些参数的配置,来告诉系统屏幕发生旋转时,不要进行Activity的重建。

禁止屏幕旋转时Activity重建:

在Activity对应的标签下配置:android:configChanges="orientation|screenSize"

Android基础之Activity生命周期(一),Android开发从基础到高级,android

添加了上面的配置,屏幕旋转时就不会发生Activity重建,系统会回调onConfigurationChanged。

在这个方法中,我们可以知道现在屏幕是处于横屏还是竖屏。这个在实际的开发中是用到的,比如一些游戏app和视频播放类app,要跟随屏幕的旋转发生界面的变化。

Android基础之Activity生命周期(一),Android开发从基础到高级,android

Android基础之Activity生命周期(一),Android开发从基础到高级,android

 orientation,中文意思方向。可以通过newConfig拿到一些相关数据。

1位竖屏,2位横屏

Android基础之Activity生命周期(一),Android开发从基础到高级,android

 拓展:

1)我们可以通过onSaveInstanceState和onRestoreInstanceState,进行数据的保存和恢复。

这两个函数都有AMS回调的,之后的文章会介绍AMS回调的时机,从源码角度来搞明白,系统是怎么做的。

2)数据持久化,可以通Jetpack中的ViewModel实现,实现的方式和原理,在后面的文章中会做介绍。文章来源地址https://www.toymoban.com/news/detail-686941.html

 
                    

到了这里,关于Android基础之Activity生命周期(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android启动之生命周期流程

    目录 一、简述 二、启动流程说明(一) 三、启动流程说明(二) 四、ServerThread常用组件的功能介绍 第一步:启动Linux: 1.Bootloader 2.kernel 第二步:Android系统启动:入口为Init.rc(system/core/rootdir) 1./system/bin/servicemanager:Binder守护进程; 2.Runtime; 3.Zygote:app_process/App_main; 4.Start VM;

    2024年02月09日
    浏览(43)
  • Android中Fragment生命周期的异常情况分析

    Fragment生命周期中可能会出现一些异常情况,主要包括以下几种: Fragment未被销毁:当Fragment被创建后,如果没有被销毁,但又被移除,就会导致Fragment的生命周期问题。这种情况下,可以通过在Fragment中手动调用FragmentManager的销毁方法来解决。 Fragment与Activity关联异常:当Fr

    2024年03月12日
    浏览(41)
  • Activity详细解释(生命周期、以各种方式启动Activity、状态保存,等完全退出)

    简单的说:Activity或者悬浮于其它窗体上的交互界面。 在一个应用程序中通常由多个Activity构成。都会在Manifest.xml中指定一个主的Activity,例如以下设置 actionandroid:name=”android.intent.action.MAIN” / 当程序第一次执行时用户就会看这个Activity,这个Activity能够通过启动其它的Activi

    2024年02月04日
    浏览(36)
  • Android复习(Android基础-四大组件)——Service与Activity通信

    我们前面学会了启动和停止服务的方法,但是服务虽然是在活动里启动的,但是启动服务之后,活动与服务之间基本没什么关系了。 正常情况,我们在Activity里调用startService()方法启动MyService这个服务,然后MyService的onCreate()和onStartCommand()方法就会得到执行。之后服务会一直处

    2024年02月13日
    浏览(30)
  • Android开发笔记(三)—Activity篇

    (1)从当前页面跳到新页面: startActivity(new Intent(源页面.this,目标页面.class)) (2)从当前页面回到上一个页面,相当于关闭当前页面: finish() onCreate:创建活动。把页面布局加载到内存,进入了初始状态。 onStart:开始活动。把活动页面显示在屏幕上,进入了就绪状态。 on

    2024年02月06日
    浏览(26)
  • 【Android开发】不同Activity之间的数据回传实例(一)摘桃子游戏

    该项目实现的功能主要有: 在首页显示一个按钮点击该按钮跳转到桃园页面 在桃园页面,点击桃子会弹窗显示摘到几个桃子,同时被点击桃子消失,总桃子数+1 点击退出桃园会返回首页,首页桃子数会根据点击的桃子数动态增加 将项目所需要的图片bg.png、monkey.png、btn_peac

    2024年01月23日
    浏览(36)
  • Android开发-Activity中“android:exported“属性的作用,以及“Permission Denial: starting Intent“错误解决

    如何在一个应用程序中,启动另外一个应用程序?最近正有这样的需求,也踩了一个小坑。本节介绍使用Activity中\\\"android:exported\\\"属性来实现这种访问。 Activity中\\\"android:exported\\\"属性说明: 在程序清单AndroidMenifest.xml文件中,可以设置这个属性。 Android中的Activity中\\\"android:exported\\\"属

    2024年02月06日
    浏览(40)
  • Android开发页面跳转异常且应用停止:android.content.ActivityNotFoundException: Unable to find explicit activity

    E/AndroidRuntime: FATAL EXCEPTION: main     Process: com.example.app01, PID: 13901     android.content.ActivityNotFoundException: Unable to find explicit activity class {com.example.app01/com.example.app01.RegisterActivity}; have you declared this activity in your AndroidManifest.xml? 根据日志信息不难发现问题的所在,就是我们需要将存

    2024年02月16日
    浏览(34)
  • Angular 17+ 高级教程 – Component 组件 の 生命周期钩子 (Lifecycle Hooks)

    之前在 Component 组件 の Angular Component vs Custom Elements 文章中,我们有学习过几个基础的 Lifecycle Hooks。 比如 OnChanges、OnInit、AfterViewInit、OnDestroy,但那篇只是微微带过而已。 这篇让我们来深入理解 Angular 的 Lifecycle Hooks。   在 Component 组件 の Dependency Injection NodeInjector 文章中

    2024年03月09日
    浏览(41)
  • Vue基础入门(2)- Vue的生命周期、Vue的工程化开发和脚手架、Vue项目目录介绍和运行流程

    Vue生命周期:就是一个Vue实例从 创建 到 销毁 的整个过程。 生命周期四个阶段: ① 创建 ② 挂载 ③ 更新 ④ 销毁 1.创建阶段:创建响应式数据 2.挂载阶段:渲染模板 3.更新阶段:修改数据,更新视图 watch 是监听的数据修改就触发, updated 是整个组件的dom更新才触发 4.销毁

    2024年03月10日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包