Activity拥有4个基本状态:

活动状态:当前Activity位于前台,可以看见也可以获得焦点,可以接受用户输入的

暂停状态:其他Activity位于前台,该Activity依然可见,但是不能获得焦点(比如一个非全屏或者透明的Activity在你的Activity的上方拥有焦点),它的状态是暂停的。一个暂停状态下的Activity是活着的,但在系统极端低的状态下可以被杀死

停止状态:当一个Activity完全被另一个Activity遮盖,它的状态是停止的。该Activity不可见,失去焦点。这种状态很容易被系统杀死

销毁状态:该Activity被系统 结束,该Activity结束或Activity所在的Dalvik进程被结束

Activity的生命周期图:

我们来说一下Activity的生命周期过程:

运行-暂停-运行:

onCreate->onStart->onResume->onPause->onResume

1.启动Activity:系统会先调用onCreate方法,然后调用onStart方法,最后调用onResume,Activity进入运行状态。
2.当前Activity被其他Activity覆盖其上或被锁屏:系统会调用onPause方法,暂停当前Activity的执行。
3.当前Activity由被覆盖状态回到前台或解锁屏:系统会调用onResume方法,再次进入运行状态。

运行-停止-运行:

onCreate->onStart->onResume->onPause->onStop->onRestart->onStart->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有三个关键的循环:
整个的生命周期,从onCreate(Bundle)开始到onDestroy()结束。Activity在onCreate()设置所有的“全局”状态,在onDestory()释放所有的资源。例如:某个Activity有一个在后台运行的线程,用于从网络下载数据,则该Activity可以在onCreate()中创建线程,在onDestory()中停止线程。
可见的生命周期,从onStart()开始到onStop()结束。在这段时间,可以看到Activity在屏幕上,尽管有可能不在前台,不能和用户交互。在这两个接口之间,需要保持显示给用户的UI数据和资源等,例如:可以在onStart中注册一个IntentReceiver来监听数据变化导致UI的变动,当不再需要显示时候,可以在onStop()中注销它。onStart(),onStop()都可以被多次调用,因为Activity随时可以在可见和隐藏之间转换。
前台的生命周期,从onResume()开始到onPause()结束。在这段时间里,该Activity处于所有 Activity的最前面,和用户进行交互。Activity可以经常性地在resumed和paused状态之间切换,例如:当设备准备休眠时,当一个 Activity处理结果被分发时,当一个新的Intent被分发时。所以在这些接口方法中的代码应该属于非常轻量级的。

MainActivity.java

package com.example.activitylifecircle;import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;public class MainActivity extends Activity {final String TAG="-Activity State-";Button finish,start;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Log.d(TAG, "--OnCreate--");finish=(Button) findViewById(R.id.button1);start=(Button) findViewById(R.id.button2);start.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v) {// TODO Auto-generated method stubIntent intent=new Intent(MainActivity.this,SecondActivity.class);startActivity(intent);}});finish.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v) {// TODO Auto-generated method stub//结束该ActivityMainActivity.this.finish();}});}@Overrideprotected void onStart() {// TODO Auto-generated method stubsuper.onStart();Log.d(TAG, "--OnStart--");}@Overrideprotected void onRestart() {// TODO Auto-generated method stubsuper.onRestart();Log.d(TAG, "--OnRestart--");}@Overrideprotected void onResume() {// TODO Auto-generated method stubsuper.onResume();Log.d(TAG, "--OnResume--");}@Overrideprotected void onPause() {// TODO Auto-generated method stubsuper.onPause();Log.d(TAG, "--OnPause--");}@Overrideprotected void onStop() {// TODO Auto-generated method stubsuper.onStop();Log.d(TAG, "--OnStop--");}@Overrideprotected void onDestroy() {// TODO Auto-generated method stubsuper.onDestroy();Log.d(TAG, "--OnDestroy--");}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {// Handle action bar item clicks here. The action bar will// automatically handle clicks on the Home/Up button, so long// as you specify a parent activity in AndroidManifest.xml.int id = item.getItemId();if (id == R.id.action_settings) {return true;}return super.onOptionsItemSelected(item);}
}

Activity的生命周期理解相关推荐

  1. (android文档原创翻译)管理Activity的生命周期一

    ( 英文原文链接地址) 1.启动你的Activity 不同其它的应用程序通过main()方法来启动,android系统是按照一定的顺序通过调用其生命周期(lifecycle)的回调方法来启动或者结束一 ...

  2. android 弹窗 onpause,Android 下拉通知栏时Activity的生命周期——重新理解onPause()

    下拉通知栏时发生了什么 在某个APP中,发现下拉通知栏的时候,正在播放的视频会暂停,于是有点好奇这段操作是不是在生命周期中实现的.在网上众多关于Activity生命周期的讨论中,很多人认为onPaus ...

  3. 深入理解 Android Activity的生命周期

    深入理解 Android Activity的生命周期 2010-10-13 14:08:29|  分类: Android |  标签:周期  调用  activity  android  protec ...

  4. 深入理解Activity的生命周期

    当用户在系统与你的应用之间切换的过程中,你的应用中的Activity实例也会在自己的不同生命周期中切换.例如,用户第一次打开你的应用,应用展现在用户的手机桌面,获取用户的输入焦点.在这个过程中,And ...

  5. 学习笔记之一:深入理解Activity的生命周期

    Activity作为安卓的四大组件之一,我们可以理解成界面.正常情况下,除了Window,Dialog和Toast,我们能看见的界面的确只有Activity. Activity的生命周期可分为两种情况 ...

  6. android的应用入口点函数,android 没有main函数,怎么找到程序执行入口呢?以及activity主要生命周期的方法说明...

    android应用程序,由一到多个Activity组成.每个Activity没有很紧密的联系,因为我们可以在自己的程序中调用其它Activity,特别是调用自己的代码之外生成的Activity,比如a ...

  7. Android 中 Activity 的生命周期

    接触 Android 有一段时间了,但是今天才去看 Activity 的生命周期,着实是因为在项目中用到了,需要去关闭释放一些数据. 以下内容来自网络,说的很直白,我就不用整理了 onCreate() ...

  8. Activit系列之---Activity的生命周期

    Activity的生命周期 Hello,巴友们好,小菜我又来发博文啦.上篇文章给大家简单的介绍了一下Activity,以及如何创建一个最简单的Activity并且在上面显示hello android! ...

  9. Android 之 Activity 的生命周期(PS:文章多图,流量警告)

    前言: 本篇文章纯粹个人见解,如有错误或不到位的地方,请指出,多谢! 一般都会直接上官方生命周期图,我就不,皮一下好开心. 我先上我的效果图: 从我的效果图看出,一般的打开关闭操作.我也在每个生命周期 ...

最新文章

  1. windows下qt5 kinect 2.0开发与环境配置
  2. VTK:vtkCamera用法实战
  3. swift -- 数组
  4. 深度学习tensorflow变量op
  5. [vb]On Error GoTo 0和On Error resume区别
  6. Python图片与其矩阵数据互相转换
  7. Rejected request from RFC1918 IP to public server address
  8. 使用ffmpege转为mkv到mp4
  9. 采用通信方式控制台达B2伺服驱动器运行在速度模式
  10. vsftpd配置不同用户不同目录
  11. java编码解码工具类
  12. Linux默认的系统管理账号是(),Linux系统管理用户账号详解
  13. SAP顾问简历中常见的英文说法,可能你不太熟悉哦~~
  14. C盘空间不足怎么办?教你将其他盘存储空间分给C盘
  15. MM定理(Modigliani-Miller)证明与图解
  16. 页面中的表格如何画斜线
  17. 三菱服务器绝对位置,绝对位置控制指令
  18. alt与title的区别(img属性)
  19. Skylin CityBuilder 6.6.1 提示授权过期解决(License Manager中显示未过期)
  20. Unity 警告 Tiled GPU perf. warning: RenderTexture color surface (110x82) was not cleared/discarded

热门文章

  1. php写接口的注意事项,接口的调用注意事项
  2. R语言:预测算法常用包总结
  3. 波卡链Substrate (5)托盘Pallets进阶
  4. 区块链BaaS云服务(21)腾讯CCGP“治理链”
  5. 初等数论--同余方程--同余方程运算:模逆运算,模指数运算
  6. MySQL—表中添加数据
  7. python—类和对象之浅拷贝和深拷贝详细讲解
  8. [architecture]-CPU(ARM)启动的第一条指令
  9. 基于以太坊的分布式投票系统solidity合约代码
  10. CS起源pointermap找基址+工具函数测试