Android Activity的理解

Activity 生命周期的四个状态

Activity的生命周期分为运行、暂停、停止、销毁四个状态。

  1. 运行状态:该Activity生命开始,Activity在前台展示,在屏幕上能获取焦点。
  2. 暂停状态:前台展示其他Activity,该Activity依然可见,在屏幕上不能获取焦点。
  3. 停止状态:该Activity不可见并且失去焦点。
  4. 销毁状态:该Activity结束生命,或此Activity所在进程被结束。
    tips:焦点类似于windows里面的光标,只有能获取焦点才可以进行点击、滑动、输入等类似操作。

Activity 生命周期过程中执行的方法

Activity在生命周期的过程中,会经历onCreate()、onStart()、onRestart()、onResume()、onPause()、onStop()、onDestroy()七个方法。在开发过程中,可重写某些方法以达到自己的项目需求。

  1. onCreate(Bundle savedInstanceState)方法:其在Activity中起到创建view的作用,创建Activity时会回调此方法并只调用一次。Bundle savedInstanceState一般用于初始化数据,savedInstanceState主要用于当Activity被异常杀死的时候,用于保存数据。
  2. onStart():启动Activity时被回调,一般不进行任何操作。
  3. onRestart():重新启动Activity时被回调。
  4. onResume():Activity变成可见前调用,获得焦点与用户进行交流,前台状态。在onStart()后一定要回调onResume()。
  5. onPause():暂停Activity时回调,此时Activity可见,但是没有获得焦点,属于暂停状态,不处于栈顶当时可以看见界面。
  6. onStop():停止Activity时被回调,此时Activity变成完全不见,进入后台状态。
  7. onDestory():Activity被销毁的时候调用,该方法只会被调用一次。

Activity的代码演示生命周期变化

tips:创建项目时会自动继承AppCompatActivity,其与Activity区别在于,前者在页面左上方会有标题。也可以手动把AppCompatActivity改成Activity。

public class MainActivity extends AppCompatActivity {private static final String TAG = "--MainActivity---甘---";@Overrideprotected void onCreate(Bundle savedInstanceState) {Log.i(TAG, "-----------onCreate-------------");super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}@Overrideprotected void onStart() {super.onStart();Log.i(TAG, "-----------onStart-------------");}@Overrideprotected void onRestart() {super.onRestart();Log.i(TAG, "-----------onRestart-------------");}@Overrideprotected void onResume() {super.onResume();Log.i(TAG, "-----------onResume-------------");}@Overrideprotected void onPause() {super.onPause();Log.i(TAG, "-----------onPause-------------");}@Overrideprotected void onStop() {super.onStop();Log.i(TAG, "-----------onStop-------------");}@Overrideprotected void onDestroy() {super.onDestroy();Log.i(TAG, "-----------onDestroy-------------");}
}

通过打Log的方式,能更加清晰动态的了解Activity的生命周期变化。

  1. 点击运行项目,观察到的生命周期为:onCreate()->onStart()->onResume(),如下图。
  2. 点击home键,观察到的生命周期为:onPause()->onStop(),如下图。
  3. 重新回到app中,接下来锁屏,观察到的生命周期为:onRestart()->onStart()->onResume()->onPause()->onStop(),如下图。
  4. 解锁,重新回到app中,接下来点击手机"back"(返回键),观察到的生命周期为:onRestart()->onStart()->onResume()->onPause()->onStop()->onDestroy(),如下图。
  5. 从此Activity切换至另一个Activity其生命周期的变化。在此,创建一个NextActivity.java文件,经过按钮点击事件切换至NextActivity。
public class NextActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.next);}
}

通过对点击的控件设置监听事件,通过以下代码切换Activity。
Intent intent = new Intent(view.getContext(), NextActivity.class); view.getContext().startActivity(intent);
点击MainActivity的设置监听事件的控件跳转至NextActivity,观察到MainActivity与NextActivity的生命周期的变化为:MainActivity:onPause()->NextActivity:onCreate()->NextActivity:onStart()->NextActivity:onResume()->MainActivity:onStop()

  1. 开发者选项 【不保留活动】开关,对activity生命周期的影响:当按home键时,相比没开【不保留活动】开关,会多经历onDestroy()的过程。即销毁了activity,重新进入时,会重新onCreate()。

总结:Activity有生命周期会经过四种状态和回调7种方法。当锁屏、按home键时,Activity保持停止状态;当按手机"back"(返回键)时,Activity便被销毁,生命周期结束。

Android Activity的理解相关推荐

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

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

  2. 【转】Android Activity原理以及其子类描述,androidactivity

        Android Activity原理以及其子类描述,androidactivity 简介 Activity是Android应用程序组件,实现一个用户交互窗口,我们可以实现布局填充屏幕,也可以实 ...

  3. 对于Activity的理解

    今天电脑小白来谈谈自己对于activity的理解. 主要分为以下四点 1 Activity是什么 Activity是最基本也是最常见的android基本组件之一,负责与用户交互,一个Activity通 ...

  4. android service交互,Android Activity与Service的交互方式

    参考: http://blog.csdn.net/gebitan505/article/details/18151203 实现更新下载进度的功能 1. 通过广播交互 Server端将目前的下载进度,通 ...

  5. Android Activity跳转动画 - overridePendingTransition用法及原理分析

    overridePendingTransition()是在Activity类中实现的一个用来实现跳转动画的方式,也是最常使用的方法. overridePendingTransition() 先看这个名 ...

  6. android handler的理解

    android handler的理解 在看handler源码前,我一直以为google构造handler的目的是方便开发者在其他线程中 调用执行主线程的方法或者在主线程中调用执行其他线程的方法.看完源 ...

  7. Android回调函数理解

    Android回调函数理解,比如我用一个activity去做显示下载进度的一个进度条,但是下载是另外一个B类来做的,这个时候我Activity获取下载的进度就可以提供一个回调接口,然后让下载类来回调就 ...

  8. Android Activity详解

    创建一个Activity 创建一个activity至少需要三个文件: Java类 XML布局文件 应用的manifest文件 这三个文件关联密切,需要理解每个文件是干啥的.推荐大家使用Android ...

  9. Android Activity 生命周期详解及监听

    前言 系列文章: Android Activity 与View 的互动思考 Android Activity 生命周期详解及监听 Android onSaveInstanceState/onResto ...

最新文章

  1. 用于制图、写电子邮件、创建条形码控件Aspose.Total
  2. 深度学习核心技术精讲100篇(十一)-Google利器超强特征提取网络(Transformer)
  3. ora 00900 已编译但有错误_ora-01113:文件2 需要介质恢复
  4. AI顶会直播丨深度学习顶级会议ICLR 2021中国预讲会明天召开,为期三天五大论坛...
  5. 微擎jsapi支付必须传openid怎么解决_面经腾讯微信支付面试记
  6. 20145233 20145228《信息安全系统设计基础》第二次实验报告
  7. 2020年周记(2/50)
  8. action在java_@Action(value=/login在java语句中是什么意思
  9. Python 读写文本(open)
  10. 收藏啦~ Github上 10 个开源免费且优秀的后台控制面板
  11. DevOps使用教程 华为云(18)git 把单个文件回退到某一版本
  12. EMS企业能源管理系统-工厂能源管控——安科瑞高逍
  13. Java Swing中国象棋AI(人机和人人对战)
  14. 界面清爽的SNS社交网络系统源码 PHP+MySQL(已整合IM聊天系统)
  15. 节假日查询 API数据接口
  16. windows下的gitbub使用入门
  17. 太牛逼了!从Python入门到入魔
  18. 柴浩然妙用三物黄芩汤
  19. 解析联想AI实践:数字化让CIO职责发生了变化,而我们有数据中心
  20. 快速实现Excel到ODX/PDX数据文件的自动转换工具:VisualODX

热门文章

  1. 2月1日学习内容整理:算法
  2. DHCP服务器禁用NetBios功能后引发WPAD失效解决方法
  3. 中国首个工业云平台发布 徐工阿里华为联合打造
  4. 【Bootstrap-插件使用】Jcrop+fileinput组合实现头像上传功能
  5. CSS实现垂直居中的5种思路
  6. 使用PHP开发的Docker前端web管理平台!
  7. CGI方式获取RTX中用户的电话和邮箱
  8. 信息管理(Information Management)
  9. 广域网一般采用什么网络拓扑结构?—Vecloud
  10. 金仓Linux安装版取消开机自启服务