网站建设资讯

NEWS

网站建设资讯

Android四大组件之Activity详解-创新互联

一、Activity的生命周期

十余年的朝天网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。网络营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整朝天建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联从事“朝天网站设计”,“朝天网站推广”以来,每个客户项目都认真落实执行。

首先,我们来了解一下Activity典型的生命周期

一个Activity从启动到结束会以如下顺序经历整个生命周期:

onCreate()->onStart()->onResume()->onPause()->onStop()->onDestory()。包含了六个部分,还有一个onRestart()没有调用,

下面就来一一介绍

  • onCreate():当 Activity 第一次创建时会被调用。当 Activity 第一次创建时会被调用。这是生命周期的第一个方法。在这个方法中,可以做一些初始化工作,比如调用setContentView去加载界面布局资源,初始化Activity所需的数据。
  • onStart():表示Activity正在被启动,即将开始,这时Activity已经出现了,但是还没有出现在前台,无法与用户交互。
  • onResume():表示Activity已经可见了,并且出现在前台并开始活动。
  • onPause():表示 Activity正在停止,仍可见,正常情况下,紧接着onStop就会被调用。onPause中不能进行耗时操作,会影响到新Activity的显示。因为onPause必须执行完,新的Activity的onResume才会执行。
  • onStop():表示Activity即将停止,不可见,位于后台。
  • onDestory():表示Activity即将销毁,这是Activity生命周期的最后一个回调,可以做一些回收工作和最终的资源回收。
  • onRestart():表示Activity正在重新启动。一般情况下,当当前Activity从不可见重新变为可见状态时,onRestart就会被调用。这种情形一般是用户行为导致的,比如用户按Home键切换到桌面或打开了另一个新的Activity,接着用户又回到了这个Actvity。

生命周期的几种普通情况

  • ①针对一个特定的Activity,第一次启动,回调如下:onCreate()->onStart()->onResume()
  • ②用户打开新的Activiy的时候,上述Activity的回调如下:onPause()->onStop()
  • ③再次回到原Activity时,回调如下:onRestart()->onStart()->onResume()
  • ④按back键回退时,回调如下:onPause()->onStop()->onDestory()
  • ⑤按Home键切换到桌面后又回到该Actitivy,回调如下:onPause()->onStop()->onRestart()->onStart()->onResume()
  • ⑥调用finish()方法后,回调如下:onDestory()(以在onCreate()方法中调用为例,不同方法中回调不同,通常都是在onCreate()方法中调用)

下面来看一下特殊情况下的生命周期

①横竖屏切换

在横竖屏切换的过程中,会发生Activity被销毁并重建的过程。

在Activity由于异常情况下终止时,系统会调用onSaveInstanceState来保存当前Activity的状态。这个方法的调用是在onStop之前,它和onPause没有既定的时序关系,该方法只在Activity被异常终止的情况下调用。当异常终止的Activity被重建以后,系统会调用onRestoreInstanceState,并且把Activity销毁时onSaveInstanceState方法所保存的Bundle对象参数同时传递给onRestoreInstanceState和onCreate方法。可以通过onRestoreInstanceState方法来恢复Activity的状态,该方法的调用时机是在onStart之后。

横竖屏切换的生命周期:onPause()->onSaveInstanceState()-> onStop()->onDestroy()->onCreate()->onStart()->onRestoreInstanceState->onResume()

可以通过在AndroidManifest文件的Activity中指定如下属性:

android:configChanges = "orientation| screenSize"

本文题目:Android四大组件之Activity详解-创新互联
分享链接:http://njwzjz.com/article/dsgchd.html