免费发布供求信息
热门搜: 无锡  赣州  南京  工业  阳电  作用  区别  消毒柜  纽曼  散热器  新能源  插槽 
当前位置: 首页 » 投稿 » 美文摘要 » 正文

activity的生命周期(如何理解Activity生命周期)

放大字体  缩小字体 发布日期:2024-07-05 19:27:03  作者:[db:新闻资讯作者]  浏览次数:19
核心提示:本文目录如何理解Activity生命周期activity 的可见生命周期有哪些如何管理Android中Activity的生命周期activity生命周期经历哪些

本文目录

  • 如何理解Activity生命周期
  • activity 的可见生命周期有哪些
  • 如何管理Android中Activity的生命周期
  • activity生命周期经历哪些方法
  • Android中,activity生命周期是指什么
  • activity的生命周期有哪些

如何理解Activity生命周期

安卓应用开发之编程理解Activity生命周期 本文将通过一个没有任何功能的程序,通过LogCat或者toast验证和理解Activity生命周期。Activity生命周期主要理解的东西可以概括为一张图、四个状态(运行、暂停、停止、死亡)、七个函数。 http://jingyan.baidu.com/article/a3f121e4e6b927fc9052bb22.html 详细可以参考这个,有图解教程,希望可以帮到你

activity 的可见生命周期有哪些

Android中Activity的生命周期可以分为四类:foreground process(前景模式)visible process(可见模式)background process(背景模式)empty process(空白模式)参考官方给出的生命周期图可以知道Activity的生命周期分为7个方法onCreate()、onStart() 、onResume()、 onPause()、onStop()、onDestory() 、onRestart()其中前景模式是由onCreate(创建)、onStart(启动) 、onResume(可见可交互)三个方法来体现的。而可见模式则分为两种状态,一种是被Dialog覆盖,进入透明模式,在onPause(暂停)可以体现出来,第二就是如果当前Activity被完全覆盖,就会进入onStop状态,完全不可见,当覆盖物消失时会调用onRestart方法来唤醒该Activity,由覆盖状态重新变为可见状态,并重新执行onstart()和onResume()重新变为可见可交互状态。如果Activity被完全覆盖的话,也就是所谓的第三种状态,背景模式。此时的Activity有两种处理方案可以使用,第一方案是调用onDestory()方法完全销毁当前的Activity。第二方案就是清除掉当前的Activity,并重新执行onstart()和onResume()重新变为可见可交互状态。如果Activity被完全覆盖,并且系统需要内存时,就会暂时销毁Activity,进入空白模式,空白模式最重要的目的就是暂时释放出内存,直到使用者再度唤醒空白模式的 Activity时,才会将空白模式变成前景模式。

如何管理Android中Activity的生命周期

一、基础1.1自己创建的activity必须要继承类Activity(或其子类)。在activity里,为了实现activity各种状态的切换,你必须实现指定的回调方法。以下是最为重要的两个回调方法onCreate():这是必须实现的回调方法,启动一个 activity时会首先调用此方法。因此,在onCreate()的方法体里,你应该初始化该activity必要的控件。值得注意的是,在这里你必须调用setContentView(View view)方法去呈现用户的界面。onPause():在用户将要离开activity时调用此方法(指的是此时activity处于半透明状态且没有获取用户的焦点)。通常在这样的状态下,你需要处理用户数据的提交、动画处理等操作。1.2销毁activity你可以调用finish()方法去销毁一个activity。同样得,你可以调用finishActivity()方法去销毁一个你刚刚启动的activity。tips:在多数情况下,你是不需要显式地调用finish…()方法去销毁一个activity。在将要讨论到的activity生命周期里,你可以知道,Android系统会为你管理activity的生命周期,所以你并不需要显式销毁activity(即调用finish类方法)。显式地调用finish类方法,会对用户的体验产生不利的影响,除非你确实是不希望用户返回到此activity(界面),才去显式调用finish类方法。二、认识activity的生命周期2、1Activity的生命周期对它的任务、backstack和与此有关联的activity有着直接的影响。因此想开发出一个健壮的有弹性的Android程序,你需要学会如何去管理activity的生命周期(即调用各种回调方法)。activity的生命周期主要包含一些三种状态:(1)运行态(Resumedstate)此时Activity程序显示在屏幕前台,并且具有焦点,可以与用户的操作进行交互,如向用户提供信息、捕获用户单击按钮的事件并做处理。(2)暂停态(PausedState)此时Activity程序失去了焦点,并被其他处于运行态的otherActivity取代在屏幕显示,但otherActivity程序并没有覆盖整个屏幕或者具有半透明的效果—此状态即为暂停态。处于暂停态的Activity仍然对用户可见,并且是完全存活的(此时Activity对象存留在内存里,保留着所有状态与成员信息并保持与窗口管理器的连接)。如果系统处于内存不足的情况下,会杀死这个Activity。(3)停止态(StoppedState)当Activity完全被另一个otherActivity覆盖时(此时otherActivity显示在屏幕前台),则处于停止态。处于停滞态的Activity依然是存活的(此时Activity对象依然存留在内存里,保留着所有的状态和与成员信息,但没有与窗口管理器保持连接),而且它对用户是不可见的,如果其他地方需要内存,系统会销毁这个Activity。处于暂停态(PausedState)或者停止态(Stopped State)的Activity,系统可以通过调用finish()方法或者直接终止它的进程来销毁此Activity(从内存中清楚此Activity对象)。被finish()或者销毁的Activity再重新打开时,是需要再次初始化此Activity的。2、2当一个Activity从一种状态转到另一种状态时,会通过调用回调方法来通知这种变化。这些回调方法都是可以重写的,你可以根据程序的的需要来选择重写对应的回调方法。以下列出了Activity生命周期里的基本回调方法:public class ExampleActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // The activity is being created. } @Override protected void onStart() { super.onStart(); // The activity is about to become visible. } @Override protected void onResume() { super.onResume(); // The activity has become visible (it is now “resumed“). } @Override protected void onPause() { super.onPause(); // Another activity is taking focus (this activity is about to be “paused“). } @Override protected void onStop() { super.onStop(); // The activity is no longer visible (it is now “stopped“) } @Override protected void onDestroy() { super.onDestroy(); // The activity is about to be destroyed. }}笔记:在方法体里,必须先调用父类对应的实现方法super.Xxx(),再执行其他的操作(如上面代码所示)。为了习惯,下面也提供一些代码来测试一些这些方法的使用,在博客的最后面。总的来说,这些回调方法定义了Activity整个生命周期。在生命周期里通过重写这些回调方法,,你可以监控以下下三个嵌套的方法循环。完整存活的时间:Activity的完整存活的时间是自第一次调用onCreate()开始,直至调用onDestroy()为止。Activity在onCreate()中设置所有“全局”状态以完成初始化,而在onDestroy()中释放所有系统资源。例如,如果Activity有一个线程在后台运行从网络下载数据,它会在onCreate()创建线程,而在 onDestroy()销毁线程。可见状态的时间:Activity的可见状态是自onStart()调用开始直到相应的onStop()调用结束。在此期间,用户可以在屏幕上看到Activity,尽管它也许并不是位于前台或者也不与用户进行交互。在这两个方法之间,我们可以保留用来向用户显示这个Activity所需的资源。例如,当用户不再看见我们显示的内容时,我们可以在onStart()中注册一个BroadcastReceiver来监控会影响UI的变化,而在onStop()中来注消。onStart() 和 onStop() 方法可以随着应用程序是否为用户可见而被多次调用。显示在前台的时间:Activity的前台显示是自onResume()调用起,至相应的onPause()调用为止。在此期间,Activity位于前台最上面并与用户进行交互。Activity会经常在暂停和恢复之间进行状态转换——例如当设备转入休眠状态或者有新的Activity启动时,将调用onPause() 方法。当Activity获得结果或者接收到新的Intent时会调用onResume() 方法。

activity生命周期经历哪些方法

如果是当前Activity弹出的dialog则不会执行Activity任何生命周期中的方法,只有其它Activity弹出了Dialog或者拦住了当前的Activity才会执行onPause()以下为Activity的生命周期图关于Activity的生命周期的解释:启动Activity:系统会先调用onCre

Android中,activity生命周期是指什么

一个Android应用程序在运行时,对于底层的Linux Kernel而言都是一个单独的进程,但是对于Android系统而言,因为局限于手机画面的大小与使用的考虑,不能把每一个运行中的应用程序窗口都显示出来。

  所以通常手机系统的界面一次仅显示一个应用程序窗口,Android使用了Activity的概念来表示界面。

  运行中的应用程序分为五大类,分别是:

    前景模式:foreground process

    可见模式:visible process

    背景模式:background process

    空白模式:empty process

    服务模式:service process

  除了最后一个,貌似service process是Service的事情了。其他都与Activity相关。

Android系统会判断应用程序Activity是属于哪一个类,给予不同的Activity生命周期。      

Activity的生命周期也是它所在进程的生命周期。

Activity生命周期的运行如图:

Activity生命周期进程类型

  在Android系统中,即使不关掉程序,当应用程序处于某种进程类时,也有可能被系统kill掉。

Android系统通过运行机制,依照哪些画面或消息对使用者最重要以及当前内存使用状况,而做出是否kill Activity的决定。

foreground process(前景模式)是当前显示于手机屏幕上的应用程序画面,被定义为前景模式的进程,其中由onCreate()、onStart() 、onResume() 函数调用的Activity都会变成foreground process正在运行的Activity。

visible process(可见模式):visible process最常发生的情况是当应用程序弹出对话框要与用户交互时,原应用程序就会变成透明(不可见)的,而对话窗口就会变成前景。

  当对话窗口退出后,原应用程序马上就又变回原前景模式了。

  在Activity窗口画面变为透明时,就会由onPause()函数掌控进入暂停状态。

  当前景进程退出时,该Activity就会再度被拉到前景模式,由onResume() 函数唤醒。

background process是在Activity窗口画面被其他Activity完全盖掉,窗口画面已经完全看不见时,则会进入onStop()停止状态。

  这种情况通常发生在两个不同的应用程序开启时,后开启的应用程序会覆盖掉原应用程序。

  此时对background process Activity的处理有两种选择:一是直接被onDestroy()退出,该程序将完全关闭,无法再使用任何返回键回到该程序;另一个处理方式是当其他Activity需要内存时,这个background process会先被清除掉,释放出内存。

  如果使用者再度浏览刚刚被清除掉的background process,则Android系统会自动再运行onCreate()重新启动该Activity,所以当系统需要内存时,就会暂时将背景进程清除,让它变成empty process(空白模式) , 所以空白进程最重要的目的就是暂时释放出内存,直到使用者再度唤醒该empty process Activity时,才会将空白进程变成前景进程。

  (Service相关)service process(服务模式进程)是由startService()所产生的,虽然服务进程有点类似背景进程在背景状态运行,但是它的运行等级和前景进程几乎一样高。

  服务模式进程是持续运行的,虽然使用者看不到任何运行画面,Android系统不会自动关闭此类的服务进程,除非使用者自行关闭。这部分内容可在Service详解里面再讨论。

 

金字塔型的生命周期

 

Activity生命周期的每一个阶段都表示为金字塔上的一个台阶,当系统创建一个新的activity时,每一个回调函数都把activity的状态网上挪一步。

  金子塔的最顶层就是activity运行在前景模式下,用户可与之交互。

  当用户离开activity时,系统调用另一些回调函数,将activity的状态从金字塔中一步一步移下来。有些情况下,activity只移动一部分,并没有完全到底,这些情况下仍然可以移动回顶部。

  注意这些状态中只有三个状态是静态(static)的,意味着activity只有在这三个状态下能停留一段时间:

Resumed:foreground,用户可交互running state

Paused:部分被遮挡,不能接收用户输入也不能执行代码,另一个半透明或者小的activity正挡在前面。

Stopped:activity完全被遮挡,不能被用户看到,activity被认为在background,当Stopped的时候,activity实例的状态信息被保留,但是不能执行任何代码。

其他状态都是转换状态,系统会很快调用其他相应的回调函数离开这些状态。比如系统调用onCreate()之后,会很快调用onStart(),之后是 onResume()。

相信不少朋友也已经看了以上的分析之后,也基本了解了Activity生命周期的几个过程,我们就来说一说这几个过程。

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:再次调用onCreate方法、onStart方法、onResume方法,进入运行状态。

7.用户退出当前Activity:系统先调用onPause方法,然后调用onStop方法,最后调用onDestory方法,结束当前Activity。

 

有关于Activity的生命周期是Android中最基础和最重要的知识,如果你想系统的了解一下Activity的生命周期,推荐你可以去一个叫做秒秒学的教程网站上看看。

activity的生命周期有哪些

在Android中每个界面都是一个Activity,切换界面操作其实是多个不同Activity之间的实例化操作。在Android中Activity的启动模式决定了Activity的启动运行方式。  Android总Activity的启动模式分为四种:Activity启动模式设置: 《activity android:name=“.MainActivity“ android:launchMode=“standard“ /》Activity的四种启动模式: 1. standard 模式启动模式,每次激活Activity时都会创建Activity,并放入任务栈中。 2. singleTop 如果在任务的栈顶正好存在该Activity的实例, 就重用该实例,否者就会创建新的实例并放入栈顶(即使栈中已经存在该Activity实例,只要不在栈顶,都会创建实例)。 3. singleTask 如果在栈中已经有该Activity的实例,就重用该实例(会调用实例的onNewIntent())。重用时,会让该实例回到栈顶,因此在它上面的实例将会被移除栈。如果栈中不存在该实例,将会创建新的实例放入栈中。 4. singleInstance 在一个新栈中创建该Activity实例,并让多个应用共享改栈中的该Activity实例。一旦改模式的Activity的实例存在于某个栈中,任何应用再激活改Activity时都会重用该栈中的实例,其效果相当于多个应用程序共享一个应用,不管谁激活该Activity都会进入同一个应用中。  其中standard是系统默认的启动模式。

 
关键词: 生命周期
 
 
相关推荐
热门点击
 
网站首页 | 网站地图 | 广告服务 | 网站留言 | RSS订阅