zoukankan      html  css  js  c++  java
  • 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 按钮的行为可能会使用户感到不愉快。

  • 相关阅读:
    中文转数字
    半角全角互转
    sql快速查记录数
    杀进程批处理
    线程基本用法
    sql游标用法示例
    BUGFREE的使用
    SQL常用函数
    ASP.NET 2.0 下的验证码控件
    经典sql语句
  • 原文地址:https://www.cnblogs.com/tysdeblog/p/8573522.html
Copyright © 2011-2022 走看看