Android界面跳转时候的生命周期

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/tianshuai4317618/article/details/79991363

今天在开发的时候碰到一个坑。关于两个界面跳转的时候,生命周期顺序的问题。

场景模拟:比如我们有两个Activity。第一个界面展示排行榜,第二个界面是游戏(H5游戏)。我们玩游戏玩完一局以后。排行榜会刷新数据。

那我们一般都是在游戏结束以后。关闭游戏界面。回到排行榜界面。然后请求网络刷新数据。然后把新数据刷新到界面上。逻辑上没有任何问题。代码也很简单。

游戏Activity,onDestroy的时候,我们调用webView的onDesrtoy方法,并且回收webView。在第一个Activity的onResume方法中。先一个网络请求获取游戏数据。然后获取数据成功以后刷新界面。

但是,我这边做了一下午,就是不会更新数据。然后在排行榜界面的时候,重新刷新数据,数据显示就正常了。

我在解决的时候,先判断,webView是否销毁成功,请求数据是否成功。以及,刷新排行榜是否有执行。然后发现,请求数据回来的都是老数据。然后和游戏确认逻辑,确实是在我的webView销毁以后就会把我的成绩更新到他们的数据库。那么,正常逻辑没有任何问题。但是为什么每次都是请求到的是老数据。

最后,我在查看日志的时候发现。排行榜Activity的onResume方法,总是在游戏的onDestroy方法之前执行。到这里,就明确了。A B两个界面跳转的时候,B界面回到A界面,并不是先走B的onDestroy()方法,而是先走了A的onResume方法。此时,游戏界面的webView并没有被销毁。所以数据实际上并没有保存到游戏数据库。

解决方案,也是超级简单。改变执行顺序。在调用游戏界面finish 之前,先调用webview的销毁即可。到这里也成功的解决了我的问题。

两个Activity跳转的时候onResume方法其实是在onDestroy方法之前执行的。

没有更多推荐了,返回首页