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等,这取决于用例