Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 安卓:onResume()_Android_Android Activity_Mobile_Onresume - Fatal编程技术网

Android 安卓:onResume()

Android 安卓:onResume(),android,android-activity,mobile,onresume,Android,Android Activity,Mobile,Onresume,有没有办法区分这两者:- 当应用程序从后台转到前台时调用的活动 从另一个活动调用的活动 android有什么不同之处吗?或者我们必须实现自己的自定义逻辑(比如跟踪上次活动)?你弄错了。每当创建活动时,onResume就在onStart之后调用。每当您的活动返回时,将调用堆栈onPause。同样,如果您的活动返回前台,则调用onResume。因此,它不像在onPause之前调用onResume。每当活动从onPause状态返回时,将调用onResume,而不是onStart或onCreate。这种

有没有办法区分这两者:-

  • 当应用程序从后台转到前台时调用的活动
  • 从另一个活动调用的活动

  • android有什么不同之处吗?或者我们必须实现自己的自定义逻辑(比如跟踪上次活动)?

    你弄错了。每当创建活动时,
    onResume
    就在
    onStart
    之后调用。每当您的活动返回时,将调用堆栈
    onPause
    。同样,如果您的活动返回前台,则调用
    onResume
    。因此,它不像在
    onPause
    之前调用
    onResume
    。每当活动从
    onPause
    状态返回时,将调用
    onResume
    ,而不是
    onStart
    onCreate
    。这种情况的发生使得Android不必一次又一次地创建活动实例,尽管这些实例没有被正确地销毁。这也非常节省内存。

    只有在从头开始创建活动(例如,从另一个活动启动)时才会调用生命周期回调
    onCreated
    ,而在从头开始创建活动和从后台恢复活动时,这两种情况下都会调用
    onResume

    如果您想知道您的活动是从另一个活动开始的,您可以添加一点hack。只需在您的意图中添加一些额外内容,如下所示:

    在将启动新活动的活动中:

    val intent = Intent(this, PSMainActivity::class.java)
    intent.putExtra("CREATED_FROM_ANOTHER_ACTIVITY", true)
    startActivity(intent)
    
     val intentt = getIntent()
     var wasCreatedFromAnotherActivity = 
         intentt.getBooleanExtra("CREATED_FROM_ANOTHER_ACTIVITY",false)
    
    在已启动的活动中:

    val intent = Intent(this, PSMainActivity::class.java)
    intent.putExtra("CREATED_FROM_ANOTHER_ACTIVITY", true)
    startActivity(intent)
    
     val intentt = getIntent()
     var wasCreatedFromAnotherActivity = 
         intentt.getBooleanExtra("CREATED_FROM_ANOTHER_ACTIVITY",false)
    

    onPause()
    中使用一个标志,然后在
    onResume()
    中检查该标志。您可以使用onSavedInstanceState()函数,并在返回时将一些数据放在那里,但您现在应该知道,onSavedInstanceState不仅在活动转到后台时调用,而且在屏幕方向改变和其他一些情况下调用。顺便说一句,请通读这篇文章,如果你有什么问题,可以在这里提问。在回答您的问题时,是的,您应该在android方法中实现您的自定义逻辑liek onPause、onSavedInstanceState等,这取决于用例