我的应用程序在新推出时会调用一些Web服务.如果用户启动应用程序(在后台运行)并恢复,我还想调用这些Web服务.我已经研究了在启动应用程序和活动聚焦时触发的所有方法.onStart(),onResume(),onRestart()等....
我认为onRestart是一个很好的选择,可以进行我的网络服务调用并更新我的视图,问题是如果我从活动A(进行呼叫的那个)转到活动B并点击后退按钮,活动A将触发onRestart()并调用Web服务.每次我从应用程序中的某些活动返回主屏幕时,我都不希望这种情况发生.如果我的应用程序活动A从外部聚焦,我只希望调用服务.他们应该注意的任何其他事件对我有帮助吗?如果我点击主页按钮然后点击我的应用程序图标它应该更新,但是如果我点击主屏幕上的内容,打开新活动然后点击后退按钮则不会.
希望这个问题有道理.
谢谢.
根据Activity生命周期,onRestart之前会调用onResume.因此,如果您将Web调用放入其中onResume,则会在活动首次启动时以及每次恢复时调用它.onRestart仅在用户导航回该活动时调用.因此,您可以在活动中使用布尔值(例如布尔值isActivityRestarting),该布尔值设置为false,然后设置为true onRestart.如果onResume击中时为真,则不要进行网络通话.
示例代码:
public void onRestart() {
isActivityRestarting = true;
}
public void onResume() {
if (!isActivityRestarting) {
executeWebCalls();
}
isActivityRestarting = false;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13071 次 |
| 最近记录: |