精华内容
下载资源
问答
  • 文章目录概述源码探究Fragment的生命周期派发状态常量值更新FragmentManagerImpl的生命周期状态...1.Fragment 生命周期 源码探究 文中源码基于’androidx.fragment:fragment:1.
  • 安卓生命周期图

    千次阅读 2018-06-27 22:39:49
    第一次启动 点击Home键 再次打开软件 点击返回键退出

    1

    第一次启动
    1
    点击Home键
    1
    再次打开软件
    2
    点击返回键退出
    3

    展开全文
  • 上图是Android Activity的生命周期图,其中Resumed、Paused、Stopped状态是静态的,这三个状态下的Activity存在时间较长。 (1)Resumed:在此状态时,用户可以与Activity进行交互,Activity在最前端 (2)Paused:...
  • Activity 的生命周期。 一、理解Activity Activity是Android程序的4大组件之一。 Activity是Android程序的表示层。程序的每一个显示屏幕就是一个Activity。 学过WEB开发的同学,可以把Activity理解成网页中的一个...
  • Android生命周期Demo

    2019-01-18 22:40:57
    Android生命周期Demo,根据第一行代码书籍编写,适合新手理解安卓的生命周期。
  • android生命周期Activity is one of the primary components of an Android application. In this tutorial, we’ll be looking at the android activity lifecycle, and the various functions invoked in the ...

    android生命周期

    Activity is one of the primary components of an Android application. In this tutorial, we’ll be looking at the android activity lifecycle, and the various functions invoked in the different stages of an Activity’s runtime.

    活动是Android应用程序的主要组件之一。 在本教程中,我们将研究android Activity的生命周期,以及在Activity运行时的不同阶段调用的各种函数。

    Android活动生命周期流程图 (Android Activity Lifecycle Flow Diagram)

    An Activity is a single focused thing that the user can see. Let’s see how the lifecycle of an Activity looks like, which functions are triggered when and why, through a flow diagram.

    活动是用户可以看到的唯一关注的事物。 让我们看看活动的生命周期如何,通过流程图何时何地触发了哪些功能。

    Android活动生命周期阶段 (Android Activity Lifecycle Stages)

    The android activity goes through following lifecycle stages.

    android活动将经历以下生命周期阶段。

    • Create

      创造
    • Start

      开始
    • Pause

      暂停
    • Resume

      恢复
    • Stop

      停止
    • Restart

      重新开始
    • Destroy

      破坏

    There are specific callback functions for each of these lifecycle stages.

    每个生命周期阶段都有特定的回调函数。

    Android活动生命周期功能 (Android Activity Lifecycle Functions)

    Let’s look at the lifestyle functions of an activity.

    让我们看一下一项活动的生活方式功能。

    1. onCreate() (1. onCreate())

    This is the first stage of an activity lifecycle. This function is called when the activity is initialized.

    这是活动生命周期的第一阶段。 活动初始化时将调用此函数。

    In our Kotlin Activity class, the following function defines onCreate():

    在我们的Kotlin Activity类中,以下函数定义了onCreate()

    fun onCreate(savedInstanceState: Bundle?)

    We’ll look at what the bundle value contains in a later section.

    我们将在后面的部分中查看bundle的值。

    2. onStart() (2. onStart())

    In this lifecycle stage, the activity is ready to process. This function is called when the activity comes into the foreground but it isn’t interactive yet.

    在此生命周期阶段,活动已准备就绪。 当活动进入前台但尚未交互时,将调用此函数。

    3. onResume() (3. onResume())

    This is where the activity is executing. This function is called when the user is interacting with the activity.

    这是活动执行的地方。 当用户与活动进行交互时,将调用此函数。

    4. onPause() (4. onPause())

    This function is called when the user interaction with the activity isn’t possible.

    当用户无法与活动进行交互时,将调用此函数。

    Common scenarios: An incoming call comes up. Another application pops up. With the introduction of Android N and the multi-window feature, multiple apps are visible on the screen at one time. Apps that are not in focus would have the onPause() method triggered.

    常见情况 :出现来电。 弹出另一个应用程序。 引入Android N和多窗口功能后,一次可在屏幕上看到多个应用程序。 没有重点关注的应用将触发onPause()方法。

    5. onStop() (5. onStop())

    This function gets triggered when the activity is no longer visible and it has stopped working.

    当活动不再可见并且已停止工作时,将触发此功能。

    6. onDestroy() (6. onDestroy())

    This function gets triggered when the activity is destroyed.

    活动销毁时将触发此函数。

    Common scenarios: A new activity starts and the current activity is killed. For example, pressing back button to exit the application.

    常见情况 :新活动开始,当前活动被终止。 例如,按返回按钮退出应用程序。

    7. onRestart() (7. onRestart())

    This function gets triggered whenever the activity starts after being stopped. It differs from onStart() in the fact that it won’t be called when the activity launches for the first time. In the later stages, it’ll always be called before onStart().

    停止活动后,只要活动开始,就会触发此功能。 它与onStart()不同之处在于,在活动首次启动时不会调用它。 在后面的阶段中,将始终在onStart()之前onStart()它。

    保存和还原活动状态 (Saving and Restoring Activity States)

    Android provides us with a pair of functions : onSaveInstanceState() and onRestoreInstanceState().

    Android为我们提供了一对函数: onSaveInstanceState()onRestoreInstanceState()

    Following are the major scenarios when your activity’s state is saved.

    以下是保存活动状态的主要方案。

    1. When onStop() is triggered.

      触发onStop()
    2. On configuration changes such as screen rotations, changes in screen sizes. Android N has multi-window features, so user often changes the window size of the applications.

      在配置更改(例如屏幕旋转)时,屏幕尺寸也会更改。 Android N具有多窗口功能,因此用户经常更改应用程序的窗口大小。

    Configuration changes generally trigger the application to recreate the current activity by destroying the current view to draw it again. We need to save the current state of the activity in the onSaveInstanceState() function as shown below.

    配置更改通常会通过破坏当前视图以再次绘制来触发应用程序重新创建当前活动。 我们需要将活动的当前状态保存在onSaveInstanceState()函数中,如下所示。

    override fun onSaveInstanceState(outState: Bundle?) {
            super.onSaveInstanceState(outState)
        }

    The Bundle object stores the field values from the activity in the form of key/value pairs.

    Bundle对象以键/值对的形式存储活动中的字段值。

    The Bundle object is of the type nullable to prevent NullPointerException, thanks to Kotlin.

    由于Kotlin,Bundle对象的类型可以为null,以防止NullPointerException。

    override fun onRestoreInstanceState(savedInstanceState: Bundle?) {
            super.onRestoreInstanceState(savedInstanceState)
    }

    The onRestoreInstanceState() function is only called when a saved state exists.

    仅当存在保存状态时才调用onRestoreInstanceState()函数。

    Note: Android automatically takes care of saving and restoring Views that have a unique ID.

    注意 :Android会自动负责保存和还原具有唯一ID的视图。

    Hence in the below layout, only the value of TextView would be saved and restored.

    因此,在下面的布局中,将仅保存和恢复TextView的值。

    <?xml version="1.0" encoding="utf-8"?>
    <android.support.constraint.ConstraintLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context="net.androidly.helloworldkotlin.MainActivity">
    
        <TextView
            android:id="@+id/textView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Hello World!"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toTopOf="parent" />
    
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="CLICK ME"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/textView" />
    
    </android.support.constraint.ConstraintLayout>

    To disable saving the view’s state, set the attribute android:saveEnabled to false

    要禁用保存视图的状态,请将属性android:saveEnabledfalse

    For Custom Views we need to explicitly set setSavedEnabled(true) on the widget.

    对于自定义视图,我们需要在小部件上显式设置setSavedEnabled(true)

    Following code snippet demonstrates saving and restoring state in an activity.

    以下代码段演示了活动中的保存和恢复状态。

    import android.support.v7.app.AppCompatActivity
    import android.os.Bundle
    import kotlinx.android.synthetic.main.activity_main.*
    
    class MainActivity : AppCompatActivity() {
    
    
        var title = "This title variable would reset when the configuration is changed. Let's preserve it"
    
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_main)
    
            textView.setText(title)
        }
    
        override fun onSaveInstanceState(outState: Bundle?) {
            outState?.putString("title",title)
            super.onSaveInstanceState(outState)
        }
    
        override fun onRestoreInstanceState(savedInstanceState: Bundle?) {
            textView.setText(savedInstanceState?.getString("title"))
            super.onRestoreInstanceState(savedInstanceState)
        }
    }

    The onRestoreInstanceState() function is called only when recreating activity after it was killed by the Android OS.

    onRestoreInstanceState()函数仅在被Android OS杀死活动后重新创建活动时才调用。

    Note: Alternatively, the saved instance values can be retrieved in the onCreate function too. But we’ll have to keep a null checker since the bundle object would be null when the activity is created for the first time.

    注意 :或者,也可以在onCreate函数中检索保存的实例值。 但是我们必须保留一个null检查器,因为在首次创建活动时,bundle对象将为null。

    override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_main)
    
            if (savedInstanceState != null) {
                textView.setText(savedInstanceState.getString("title"))
            } else
                textView.setText(title)
        }

    处理活动配置更改 (Handling Activity Configuration Changes Ourselves)

    We can set the android:configChanges attribute in the AndroidManifest.xml file to prevent recreating the activity on a configuration change.

    我们可以在AndroidManifest.xml文件中设置android:configChanges属性,以防止在配置更改时重新创建活动。

    <activity android:name=".MainActivity"
              android:configChanges="orientation|keyboardHidden|screenSize"
              android:label="@string/app_name">

    The following method gets triggered whenever any of the above configuration change happens.

    每当上述任何配置更改发生时,都会触发以下方法。

    override fun onConfigurationChanged(newConfig: Configuration?) {
            super.onConfigurationChanged(newConfig)
    }

    References: Google Docs

    参考资料: Google文件

    翻译自: https://www.journaldev.com/53/android-activity-lifecycle

    android生命周期

    展开全文
  • 本篇文章小编为大家介绍,Android 程序应用的生命周期。需要的朋友参考下
  • Android生命周期详解

    千次阅读 2020-07-30 15:15:32
    Android生命周期分为两部分: 一、典型情况下的生命周期。 二、异常情况下的生命周期。 一、典型情况下的生命周期 典型情况下的生命周期指在有用户参与的情况下,Activity所经过的生命周期的改变,正常情况下,...

    最近在看任玉刚老师的开发艺术探索,记录一下。
    Android生命周期分为两部分:
    一、典型情况下的生命周期。
    二、异常情况下的生命周期。

    一、典型情况下的生命周期

    典型情况下的生命周期指在有用户参与的情况下,Activity所经过的生命周期的改变,正常情况下,Activity的常用生命周期就只有下面七个。

    /*1.onCreate:
        每个Activity在写代码的过程中都会看见这个函数,
        是声明周期的第一个方法。
        一般做一些资源和数据初始化的工作,
        比如绑定相对应的资源布局setContentView*/
            @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
        
        
    /*2.onRestart:
        字面意思表示Activity重新启动,这个状态一般由用户切换应用的行为产生,
        比如从应用切换到桌面或者切打开新的Activity,
        此时这个Activity就会调用onPause和onStop让这个Activity进入展厅状态。
        再回到这个Activity就是onRestart了*/
            @Override
        protected void onRestart() {
            super.onRestart();
        }
        
        
    /*3.onStart:
        这个状态我理解就是Activity启动中的一个过程,
        就是启动中,但是还不能与用户交互(用户不可见),
        属于一个在后台的状态*/
            @Override
        protected void onStart() {
            super.onStart();
        }
        
        
    /*4.onResume:
        表示Activity已经可见,且已经开始活动。
        与onStart类似的状态但是就是属于一种在前台的状态*/
            @Override
        protected void onResume() {
            super.onResume();
        }
        
        
    /*5.onPause:
        是一个非常微妙的状态,处于正在停止的一个临界点,
        就很难重现这种状态,就是在停止过程中,
        先执行onPause然后在onStop执行之前,
        回到Activity执行onResume,这期间就是onPause的状态。
        此处可以做一些存储数据停止动画的工作,但是不能太耗时,
        不然会影响到新Activity的显示,只有这些操作做完,
        新Activity的OnResume才会执行。*/
            @Override
        protected void onPause() {
            super.onPause();
        }
        
        
    /*6.onStop:
        表示Activity即将停止,可以做一些相对重量级的回收工作,
        同样不能太耗时。*/
        @Override
        protected void onStop() {
            super.onStop();
        }
    
    /*onDestroy
        表示Activity即将被销毁,这是Activity生命的尽头,
        可以做一些回收工作和资源的释放。*/
        @Override
        protected void onDestroy() {
            super.onDestroy();
        }
    

    activity生命周期的切换过程
    1、onStart 和 onResume、onPause 和 onStop 从描述上看差不多,对我们来说有什么实质的不同呢?
       从实际使用过程中来说,onStart 和 onResume、onPause 和 onStop看起来的确差不多,甚至我们可以只保留一对,比如只保留 onState 和 onStop。既然如此,那为什么 Android系统还要提供看起来重复的接口呢?根据上面的分析,我们知道,这两个配对的回调分别表示不同意义,onState 和onStop 是从 Activity 是否可见这个角度来回调的,而 onResume 和 onPause 是从 Activity 是否位于前台这个角度来回调的,除了这种区别,在实际使用中没有其他明显区别。

    2.假设当前Activity为A,如果这时用户打开了一个新的活动B,那么B的onResume和A的onPause谁先执行呢?
       我们可以从Android源码里得到解释,A的onPause执行后B的onResume才会被调用。从另一个角度来说Android的官方文档中对onPause有这样一句解释:不能在onPause里进行重量级操作,因为必须在onPause执行过后,新的Activity才能Resume。

    二、异常情况下的生命周期

       onSaveInstanceState方法只会出现在 Activity被异常终止的情况下,它的调用时机是在 onStop之前,它和onPause方法没有既定的时序关系,可能在它之前,也可能在它之后。当 Activity被重新创建的时候, onRestoreInstanceState会被回调,它的调用时机是 onStart之后。系统只会在 Activity即将被销毁并且有机会重新显示的情况下才会去调用 onSaveInstanceState方法。当 Activity在异常情况下需要重新创建时,系统会默认为我们保存当前 Activity的视图结构,并且在 Activity重启后为我们恢复这些数据,比如文本框中用户输入的数据、listview滚动的位置等,这些 view相关的状态系统都会默认为我们恢复。具体针对某一个 view系统能为我们恢复哪些数据可以查看 view的源码中的onSaveInstanceState和 onRestoreInstanceState方法。
       关于保存和恢复 View 的层次结构,系统工作流程是: Activity 异常终止, Activity 调用 onSaveInstanceState 去保存数据,然后 Activity 会委托 Windows 去保存数据,接着 Window 再委托它上面的顶层容器去保存数据。顶层容器是一个 ViewGroup ,一般来说它很可能是 DectorView ,最后顶层容器再去通知它的子元素保存数据。(这是一种委托思想,上层委托下层,父容器委托子元素去处理事情,如 View 的绘制过程,事件分发都是采用类似的思想)

    展开全文
  • android studio中 activity的当前页横竖屏切换、跳转页面后横竖屏切换以及生命周期的调用
  • 安卓生命周期

    2018-06-01 12:27:00
    安卓生命周期的介绍,一个活动的创建开始停止销毁!有需要的可以下载
  • 1、android生命周期图 2、activity三种状态 (1)active:当Activity运行在屏幕前台(处于当前任务活动栈的最上面),此时它获取了焦点能响应用户的操作,属于活动状态,同一个时刻只会有一个Activity处于活动...

    1、android生命周期图

     

    2、activity三种状态

    (1)active:当Activity运行在屏幕前台(处于当前任务活动栈的最上面),此时它获取了焦点能响应用户的操作,属于活动状态,同一个时刻只会有一个Activity处于活动(Active)。

    (2)paused:当Activity失去焦点但仍对用户可见(如在它之上有另一个透明的Activity或Toast、AlertDialog等弹出窗口时)它处于暂停状态。暂停的Activity仍然是存活状态(它保留着所有的状态和成员信息并保持和窗口管理器的连接),但是当系统内存极小时可以被系统杀掉。

    (3)stoped:完全被另一个Activity遮挡时处于停止状态,它仍然在内存中保留着所有的状态和成员信息。只是对用户不可见,当其他地方需要内存时它往往被系统杀掉。

    3、activity七个方法

    onCreate():当Activity第一次被实例化的时候系统会调用,整个生命周期只调用1次这个方法。通常用于初始化设置,为Activity设置所要使用的布局文件,为按钮绑定监听器等静态的设置操作。

    onStart():当Activity可见未获得用户焦点不能交互时系统会调用。

    onRestart():当Activity已经停止然后重新被启动时系统会调用。

    onResume():当Activity可见且获得用户焦点能交互时系统会调用。

    onPause():用来存储持久数据。到这一步是可见但不可交互的,系统会停止动画等消耗CPU的事情。从上文的描述已经知道,应该在这里保存你的一些数据,因为这个时候你的程序的优先级降低,有可能被系统收回。

    onStop():当Activity被新的Activity完全覆盖不可见时被系统调用。

    onDestroy():当Activity(用户调用finish()或系统由于内存不足)被系统销毁杀掉时系统调用,(整个生命周期只调用1次)用来释放onCreate()方法中创建的资源,如结束线程等。

    4、android三个嵌套循环

    (1)Activity完整的生命周期:从第一次调用onCreate()开始直到调用onDestroy()结束。

    (2)Activity的可视生命周期:从调用onStart()到相应的调用onStop()。在这两个方法之间,可以保持显示Activity所需要的资源。如在onStart()中注册一个广播接收者监听影响你的UI的改变,在onStop()中注销。

    (3)Activity的前台生命周期:从调用onResume()到相应的调用onPause()。

    5、BroadcastReceiver广播接收器生命周期

    生命周期只有十秒左右,如果在onReceive()内做超过十秒内的事情,就会报ANR(Application No Response)程序无响应的错误信息。它的生命周期为从回调onReceive()方法开始到该方法返回结果后结束。

    6、Service服务生命周期

    Service完整的生命周期从调用onCreate()开始直到调用onDestroy()结束。

    Service有两种使用方法:

    (1)以调用Context.startService()启动,而以调用Context.stopService()结束。

    (2)以调用Context.bindService()方法建立,以调用Context.unbindService()关闭。

    7、一个activity的启动过程

    (1)第一个Activity的启动顺序:onCreate()——>onStart()——>onResume()

    (2)当另一个Activity启动时:第一个Activity onPause()——>第二个Activity onCreate()——>onStart()——>onResume()——>第一个Activity onStop()

    (3)当返回到第一个Activity时:第二个Activity onPause()——> 第一个Activity onRestart()——>onStart()——>onResume()——>第二个Activity onStop()——>onDestroy()

    每一个Activity都处于某一个状态,对于开发者来说,是无法控制其应用程序处于某一个状态的,这些均由系统来完成。

    展开全文
  • 当听到这个题目的时候,我得意地笑了笑,对于Activity的生命周期已经记熟的我,心想,为什么不直接问Activity的生命周期呢?于是想当然的说出了如下的答案: 在A跳转B会执行:A onPause -> A onStop -> B onCreate...
  • 关于Activity生命周期和横竖屏切换时,生命周期的执行过程,网上有很多文章。但是都写的很模糊,并且不完善。一般的我们去切换屏幕方向都是不希望Activity被重新创建,这时就需要对一些属性进行设置,或者使用代码...
  • android Service的生命周期 bind以及startService两种方式 对应的生命周期
  • <actionandroid name=AndroidintentactionMAIN> 当程序第一次运行时用户就会看这个Activity,这个Activity可以通过启动其他的Activity进行相关操作。当启动其他的Activity时这个当前的这个Activity将会停止,新的...
  • 对应生命周期可参考下: 详解Android Fragment之二:Fragment的创建和生命周期  创建片元(Creating a Fragment)  To create a fragment, you must create a subclass of Fragment (or an existing subclass ...
  • Service概念及用途: Android中的服务,它与Activity不同,它是不能与用户交互的,不能自己启动的,运行在后台的程序,如果我们退出应用时,Service进程并没有结束,它仍然在后台运行,那...Service生命周期 : Android
  • 在activity刚开始被创建的时候当弹出一个dialog的时候,生命周期没有任何变化,仍然和之前相同,因为该dialog属于该activity当跳到其他界面的时候,触发了onPause和onStop再次跳转回刚才界面的时候,会触发onStart,...
  • 一、简介 二、代码 /activityLifeCycle_3Screen/AndroidManifest.xml <manifest xmlns:android=http://schemas.android.com/apk/res/android ... android:versionCode=1 ... android:targetSdkVersio
  • 今天在做视频播放时碰到了一个问题:当用户按下电源键锁屏后(屏幕...我的Activity在manifest.xml 配置如下android:configChanges="locale|orientation|keyboardHidden"android:screenOrientation="landscape"解决办...
  • 软硬件环境Macbook Pro MGX 72Android Studio 1.3.2Genymotion...今天我们就来好好学习下Activity的生命周期。Activity是什么?Activity是Android开发中最重要一个组件,几乎所有的交互操作都在Activity中进行,...
  • Android生命周期详细案例!
  • AndroidView的生命周期分析,对比xml三种visibility和在java中new的生命周期
  • Android中Activity的生命周期莫过于Activity的创建到消亡的过程了。本篇博客就会介绍Activity生命周期中的不同阶段,通过实例的形式来窥探一下Activity的生命周期。搞明白Activity的生命周期是至关重要的,因为...
  • 开发应用程序都要了解其生命周期。 今天我们接触一下iOS应用程序的生命周期, iOS的入口在main.m文件: int main(int argc, char * argv[]) { @autoreleasepool { return UIApplicationMain(argc, argv, nil, ...
  • Activity作为Android的四大组件之一,在实际开发中扮演着很重要的角色,了解它的声明周期对我们以后的开发会很有帮助,下面我们来看看在不同场景下Activity的生命周期准备两个Activity,IndexActivity和...
  • Activity生命周期 1.图解Activity生命周期: 2.七个方法的含义 一、 onCreate :当活动第一次启动的时候,触发该方法,可以在此时完成活动的初始化工作。 二、 onStart :该方法的触发表示所属活动将被展现给用户,...
  • 主要介绍了Android中的Activity生命周期总结,本文讲解了Activity四大基本状态、Activity七大生命周期函数、切换横竖屏触发的生命周期事件等内容,需要的朋友可以参考下
  • 主要介绍了Android App开发中Fragment的创建与生命周期,文中详细地介绍了Fragment的概念以及一些常用的生命周期控制方法,需要的朋友可以参考下
  • 首先看一下Android api中所提供的Activity生命周期图(不明白的,可以看完整篇文章,在回头看一下这个图,你会明白的): Activity其实是继承了ApplicationContext这个类,我们可以重写以下方法,如下代码: 代码如下: ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 159,716
精华内容 63,886
关键字:

安卓生命周期图