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初始化数据的时候,就会相应变化。
- Android: 返回上一Activity页面的时候重新加载该页面数据的方法
- window.location.href和window.location.reload()方法在ajax提交后返回页面重新加载时候的区别
- js 页面history.back()返回上一页,ios 不重新加载ready的解决办法
- js 页面history.back()返回上一页,ios 不重新加载ready的解决办法
- js 页面history.back()返回上一页,ios 不重新加载ready的解决办法
- 使用easyUI的treegrid的时候,出现后台返回数据为空时,treegrid加载了前面请求到的数据到页面上的问题
- Socket返回页面上的数据
- 【jQWidgets】jqxGrid控件在页面上重新加载的问题
- asp.net 重新加载父页面的方法汇总
- Android-Activity页面之间的数据传递
- Android-Activity页面之间的数据传递
- 写页面加载状态改变的时候执行的方法
- js页面加载时候的调用函数的方法
- android fragment的页面返回刷新数据
- android 加载web view的时候,点击输入框,导致页面放大的问题解决方法
- 返回Activity后页面刷新的一个小方法
- 在前台页面修改properties配置文件后 tomcat重新加载该配置文件的问题
- ASP防止页面刷新重新提交数据的方法
- 统计学习方法:统计学习方法概论
- 【Linux】vim的简单配置
- 敏捷开发实践之问题3
- 网络流之dinic算法
- 关于C10K问题
- Android: 返回上一Activity页面的时候重新加载该页面数据的方法
- BZOJ3932: [CQOI2015]任务查询系统
- Redux系列01+核心概念 工作流程 安装 Action和Action创建函数 Reducer Store 数据流
- Java线程状态分析
- 10. Regular Expression Matching
- java学习第五天
- Java集合框架总结01之常用单列集合(ArrayList, HashSet)
- HDU 1532 Drainage Ditches
- Codeforces-792E Colored Balls(贪心/数学)