Android暂停/恢复

时间:2017-10-27 22:17:16

标签: android android-activity android-lifecycle onresume onpause

查看有关Activity Lifecycle的文档 https://developer.android.com/reference/android/app/Activity.html

在我看来, onResume 回调并不是真正的简历。因为它会在

运行

一个。活动刚刚创建,即使它没有暂停。 湾活动暂停,然后恢复。

我正在将用户发送到另一个活动来执行操作,并且根据用户对其他活动的操作,当他们返回时,我需要决定是否重新加载应用清单。但是,我甚至不想检查应用程序是否暂停了! (即用户刚刚开启活动)

有没有更好的方法来跟踪用户是否真的正在恢复,而不是在onPause中创建一个我将在用户返回时检查的变量?

2 个答案:

答案 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
   }

}

如果你想坚持,你甚至可以在o​​nSaveInstanceState中保存这个变量,并在你的onCreate中获得保存状态

答案 1 :(得分:0)

如果您绝对反对在onPause中设置变量并希望确保在重新加载数据之前进行了更改,那么在API调用中设置一个变量,当用户返回活动时触发重新加载。根据您的应用程序结构,您甚至可以在活动中点击onResume之前重新加载。

另请注意,如果您在片段中并提供弹出窗口(例如活动指示符),则会调用onResume。