Android: 返回上一Activity页面的时候重新加载该页面数据的方法

来源:互联网 发布:未网络上注册 有信号 编辑:程序博客网 时间:2024/05/29 04:47

一.情景描述:

最近在做毕业设计:天气APP,主界面HomeActivity显示天气数据,CityActivity是城市管理界面,HomeActivity每次会加载CityActivity中的置顶城市。我要解决的问题是,当城市管理列表的置顶城市发生改变时,主界面数据也改变。

注意:当打开app运行时,HomeActivity是在onCreate方法中请求的数据库城市列表天气数据

   HomeActivity是app首页。

二.解决思路分析:

利用activity生命周期

情景1:HomeActivity跳到CityActivity时,不被finish掉。

页面跳转                                        HomeActivity生命周期

HomeActivity->CityActivity   onResume->onPause
CityActivity->HomeActivity
    onPause->onResume

观察发现,我们可以利用onPause去刷新HomeActivity的数据。

情景2:HomeActivity跳到CityActivity时,被finish掉。

                         HomeActivity->CityActivity         onResume->onPause->onStop->onDestroy

                         CityActivity->HomeActivity          onCreate->onStart->onResume

                         观察发现,我们可以在onPause,onStop,onCeate中去刷新HomeActivity的数据。

          我们再对HomeActivity生命周期所有使用场景分析一下(我所能想到的所有场景):

1.HomeActivity->手机主屏(就是你直接按手机HOME键,返回你屏幕界面情况,这是你就看不到HomeActivity了吧,除非你长按HOME键,会弹出HomeActivity缩小的界面)。(我就不配图了,如果图片太多的话,会影响大家的观看效果)

onResume->onPause->onStop    (注意:这里我们不讨论HomeActivity的finish情况,因为这样做app会关掉,而我们讨论的是CityActivity到HomeActivity时,刷新数据)

2.手机主屏->HomeActivity(就是你长按手机HOME键,点击HomeActivity缩小的界面,然后它就会放大,这时候你看到的就不是手机主屏了,而是HomeActivity)

onRestart->onStart->onResume

3.手机主屏->其他app页面

无变化

4.手机主屏->锁屏

无变化

5.HomeActivity(app首页)->手机返回键(按了该键后,HomeActivity并没有消失,你按长HOME键的时候,还能看到它)->HomeActivity

onPause->onStop->onDestroy->onCreate->onStart->onResume

6.HomeActivity->锁屏

onResume->onPause->onStop

7.HomeActivity->关机/电池没电(未测试)

前面情景1,2时,我说onPause,onStop,onCeate可以去刷新HomeActivity数据,结合刚说的HomeActivity生命周期使用场景,我们发现onPause,onStop会被多次调用,因为这些使用场景使我们生活中经常操作的,而相比较之下,onCreate只出现了一次,那么我们就用onCreate了,因为它消耗的资源少。

三.解决方法:

CityActivity->HomeActivity,也就是第二页面调回第一页面(我app首页),两种方法:

方法一:setOnClickListener

就是xml布局中,定义一个id(比如按钮,图片,文字),点击监听,然后用intent返回HomeActivity。

方法二:按手机返回键(HOME键旁边的,我的返回键在HOME键右边)

  在方法onBackPressed中用intent返回

注意:1.在HomeActivity->CityActivity的时候,一定要finish掉HomeActivity(理由:看上面情景2,因为只有这样,你才有机会用到onCreate)

      2.我打开app时,HomeActivity第一次初始化数据就是在onCreate方法进行的;当我从CityActivity返回到HomeActivity时,如果我的城市列表置顶城市发生变化,HomeActivity初始化数据的时候,就会相应变化。


0 0
原创粉丝点击