查看有关Activity Lifecycle的文档 https://developer.android.com/reference/android/app/Activity.html
在我看来, onResume 回调并不是真正的简历。因为它会在
运行一个。活动刚刚创建,即使它没有暂停。 湾活动暂停,然后恢复。
我正在将用户发送到另一个活动来执行操作,并且根据用户对其他活动的操作,当他们返回时,我需要决定是否重新加载应用清单。但是,我甚至不想检查应用程序是否暂停了! (即用户刚刚开启活动)
有没有更好的方法来跟踪用户是否真的正在恢复,而不是在onPause中创建一个我将在用户返回时检查的变量?
答案 0 :(得分:1)
在您的活动中声明一个布尔标志:
boolean hasBeenPaused = false;
现在在你的onPause()中,将其设置为true:
public void onPause(){
hasBeenPaused = true;
}
由于你的onResume被调用,无论应用程序是否先前暂停,你现在可以检查布尔值并知道它是一个新的开始onResume还是post pause onResume
public void onResume(){
if(hasBeenPaused){
//onPause was called
//May be because of home button press, recents opened, another activity opened or a call etc...
}else{
//this is a call just after the activity was created
}
}
如果你想坚持,你甚至可以在onSaveInstanceState中保存这个变量,并在你的onCreate中获得保存状态
答案 1 :(得分:0)
如果您绝对反对在onPause中设置变量并希望确保在重新加载数据之前进行了更改,那么在API调用中设置一个变量,当用户返回活动时触发重新加载。根据您的应用程序结构,您甚至可以在活动中点击onResume之前重新加载。
另请注意,如果您在片段中并提供弹出窗口(例如活动指示符),则会调用onResume。