- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我的应用程序在刚刚启动时会调用一些 Web 服务。如果用户启动应用程序(在后台运行)并恢复,我还想调用这些 Web 服务。我研究了应用程序启动时以及 Activity 处于焦点时触发的所有方法。 onStart()、onResume()、onRestart() 等......
我认为 onRestart 是进行 Web 服务调用和更新 View 的好选择,问题是如果我从 Activity A(进行调用的那个)转到 Activity B 并点击后退按钮,Activity A 将触发onRestart() 并调用网络服务。我不希望每次我从我的应用程序中的某些 Activity 返回主屏幕时都发生这种情况。我只希望在我的应用 Activity A 从外部成为焦点时调用这些服务。他们还有其他我应该知道的事件可以帮助我吗?如果我点击主页按钮,然后点击我的应用程序图标,它应该会更新,但如果我点击主屏幕上的某个内容,打开一个新 Activity ,然后点击后退按钮,则不会更新。
希望这个问题是有道理的。
谢谢。
最佳答案
根据Activity lifecycle , onRestart
将在 onResume
之前被调用。因此,如果您将 Web 调用放在 onResume
中,它将在 Activity 首次启动和恢复时调用。 onRestart
仅在用户导航回该 Activity 时调用。因此,您可以在 Activity 中设置一个 bool 值(例如 bool 值 isActivityRestarting),该值设置为 false,然后在 onRestart
中设置为 true。如果在 onResume
被击中时为真,则不要进行网络调用。
示例代码:
public void onRestart() {
isActivityRestarting = true;
}
public void onResume() {
if (!isActivityRestarting) {
executeWebCalls();
}
isActivityRestarting = false;
}
关于android - onRestart() 在按下后退按钮时被调用,有什么办法可以防止这种情况发生?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8390112/
我是一名优秀的程序员,十分优秀!