activity状态变化

activity状态变化

https://developer.android.google.cn/guide/components/activities/state-changes.html#back   --翻译

不同的事件,一些用户触发,一些系统触发,可以导致activity从一个状态转换到另一个状态。本文档描述了一些常见的转换发生的情况,以及如何处理这些转换。

配置发生改变



有许多事件可以触发配置更改。也许最突出的例子是(屏幕)横竖方向的改变。其他可能导致配置更改的情况包括对语言或输入设备的更改。

当发生配置更改时,activity将被销毁并重新创建。要为activity保存简单的暂态数据,您必须重写onSaveInstanceState()方法来保存数据,然后使用onCreate()或onRestoreInstanceState()回调来重新创建实例状态。

有关在配置更改中持久化简单数据的具体细节,请参见activity生命周期的保存和恢复activity状态部分。有关持久化简单和复杂UI数据的方法的更多信息,请参见保存UI状态。

处理多窗口的情况

当应用程序进入多窗口模式时(在Android 7.0 (API级别24)和更高版本中可用),系统会通知当前正在运行的activity配置更改了,从而完成上面描述的生命周期转换。如果一个已经在多窗口模式下的应用程序被调整大小,这种行为也会发生。您的activity可以处理配置更改本身,或者它可以允许系统破坏activity并以新的尺寸重新创建它。

有关多窗口生命周期的更多信息,请参见 多窗口支持 页面的 多窗口生命周期 部分。

在多窗口模式下,虽然用户可以看到两个应用程序,但只有和用户交互的应用程序在前台并且有用户焦点。该activity处于 Resumed 状态,而另一个窗口中的应用程序处于 Paused 状态。

当用户从app A切换到app B时,系统会在app A上调用onPause(),在app B上调用onResume(),每次用户切换应用程序时,它会切换这两种方法。

有关多窗口的详细信息,请参阅 多窗口支持。

activity或对话框出现在前台



如果一个新的activity或对话框出现在前台,获得焦点并部分地覆盖正在进行的activity,则被覆盖的activity将失去焦点并进入 Paused 状态。然后,系统调用onResume()。

当被覆盖的activity返回到前台并恢复焦点时,调用onResume()。

如果一个新的activity或对话框出现在前台,获得焦点并完全覆盖正在进行的activity,则被覆盖的activity将失去焦点并进入 Stopped 状态。于是,系统紧接地调用onPause()和onStop()。

当被覆盖activity的相同实例返回到前台时,系统将调用onRestart()、onStart()和onResume()。如果它是涉及到后台的被覆盖activity的新实例,则系统不会调用onRestart(),只调用onStart()和onResume()。

注意:当用户点击Overview或Home按钮时,系统的行为就好像当前的activity已经被完全覆盖了。

用户点击后退按钮



如果activity在前台,用户点击 Back 按钮,activity将通过onPause()、onStop()和onDestroy()回调进行转换。除了被销毁之外,activity还从回退栈中移除。

需要注意的是,在默认情况下,onSaveInstanceState()回调不会在这种情况下触发。此行为基于假设用户单击Back按钮时并不期望返回该activity的相同实例的假设。但是,您可以重写onBackPressed()方法来实现一些自定义行为,例如“确认退出”对话框。

如果您重写onBackPressed()方法,我们仍然强烈建议您在重写的方法中调用super.onBackPressed()。否则, Back 按钮的行为可能会使用户感到不愉快。

原文地址:https://www.cnblogs.com/tysdeblog/p/8573522.html

时间: 2024-08-10 00:24:02

activity状态变化的相关文章

Android生命周期 & Activity生命周期

了解Android系统的进程优先级的变化方式 1.Android系统一般是运行在资源受限的硬件平台上,因此资源管理对Android系统很重要 2.为了保证高优先级程序正常运行,可以在无任何警告的情况下终止低优先级程序,并回收其使用的系统资源,因此,Android程序并不能完全控制自身的生命周期,而是由ANdroid系统进行调度和控制的 3.Android系统尽可能地不主动去终止应用程序,即使生命周期结束的程序也会保存在内存中,以便再次快速启动 4.但在内存紧张时,系统会根据进程的优先级清除进程,

Android学习笔记(第一篇)编写第一个程序Hello World+Activity

  PS:实验室里就我一个搞Android的,像人家学习J2EE的,还有人带着去学,我这样没人带的就只能自己摸爬滚打了,也总算是把大部分的基础算是学完了,终于开始正式的搞Android了...无人带的一介菜鸟,我还是自己默默的努力吧... 学习内容: 1.编写第一个Hello World程序..   学习Android,那么就需要有一个编译器来集成这个环境,然后在搭建好环境的编译器上进行开发就可以了,我所介绍的都是在Eclipse上来进行Android的开发...环境搭建在这里我就不进行介绍了.

Android开发新手必备16个知识

Android开发新手必备,这是我在麦子学院论坛里面看见的,觉得很不错,分享给大家: 1.Activity生命周期,横竖屏切换时候Activity状态变化. 生命周期: 完成的生命周期: 即从一个Activity出现到消失,对应的周期方法是:onCreate到onDestroy : 启动: onCreate()->onStart()->onResume三个方法: BACK键: 当我们按BACK键时,我们这个应用程序将结束,这时候我们将先后调用onPause()->onStop()->

android Activity 的生命周期 以及横屏竖屏切换时 Activity 的状态变化

生命周期Android 系统在Activity 生命周期中加入一些钩子,我们可以在这些系统预留的钩子中做一些事情.例举了 7 个常用的钩子:protected void onCreate(Bundle savedInstanceState)protected void onStart()protected void onResume()protected void onPause()protected void onStop()protected void onRestart()protecte

Android Activity基础详解

一.Activity简介 Activity 是一个应用组件,用户可与其提供的屏幕进行交互,以执行拨打电话.拍摄照片.发送电子邮件或查看地图等操作. 每个 Activity 都会获得一个用于绘制其用户界面的窗口.窗口通常会充满屏幕,但也可小于屏幕并浮动在其他窗口之上. 一个应用通常由多个彼此松散联系的 Activity 组成. 一般会指定应用中的某个 Activity 为"主" Activity,即首次启动应用时呈现给用户的那个 Activity. 而且每个 Activity 均可启动另

android学习——activity总结

一.什么是activity Activity 是用户接口程序,原则上它会提供给用户一个交互式的接口功能.它是 android 应用程序的基本功能单元.Activity 本身是没有界面的.所以activity类创建了一个窗口,开发人员可以通过setContentView(View)接口把UI放到activity创建的窗口上,当activity指向全屏窗口时,也可以用其他方式实现:作为漂浮窗口(通过windowIsFloating的主题集合),或者嵌入到其他的activity(使用ActivityG

Activity生命周期方法的调用顺序工程与测试日志

下面为测试activity的方法的执行顺序   工程与测试资源地址 android工程 AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.finalizetest"

Android学习笔记(三三):Activity生命周期

Android很大的应用场景是手机,有一些应用具有特别的优先级别,例如电话,同时设备的内存是有限的.因在某些情况下系统将踢走activity,以便是否内存.因此在开发过程中,我们需要管理好activity的生命周期.右图是Android的docs中提供的activity的时间触发图. 四大状态 一般来讲,某一时刻,Activity处在下面四个状态之一: Active:已由用户启动,正在前台运行. Paused:已由用户启动,正在运行且可视,但是由于提示或者其他覆盖部分的屏幕.这是用户可以看到ac

Activity启动模式 及 Intent Flags 与 栈 的关联分析

   在学习Android的过程中,Intent是我们最常用Android用于进程内或进程间通信的机制,其底层的通信是以Binder机制实现的,在物理层则是通过共享内存的方式实现的.     Intent主要用于2种情景下:(1)发起意图  (2)广播     它的属性有:ComponentName,action,data,category,extras,flags等,通常情况下,进行Intent的匹配涉及到3个属性:Action,Data,Category.这些东西都需要了解才能对它有个深入的