Android 暂停/恢复

Android Pause / Resume

只要看看这份关于 Activity 生命周期的文档 https://developer.android.com/reference/android/app/Activity.html

在我看来 onResume 回调并不是真正的简历。因为它将 运行 如果

一个。 Activity 刚刚创建,即使它没有暂停。 b. Activity 暂停,然后恢复。

我正在将一个用户发送给另一个 activity 做一些事情,并且根据用户在其他活动中所做的事情,当他们 return 时,我需要决定是否重新加载应用程序显现。但是,我什至不想检查应用程序是否根本没有暂停! (即用户刚刚打开 activity)

除了在 onPause 中创建一个我将在用户 returns 时检查的变量之外,是否有更好的方法来跟踪用户是否真的在恢复?

在您的 activity:

中声明一个布尔标志
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 中获取保存的状态

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

中点击 onResume 之前重新加载

另请注意,如果您在片段中并提供弹出窗口(例如 activity 指示器),将调用 onResume。