解决ViewPager缓存导致不能实时刷新数据

ViewPager+Fragment,但是Fragment有个不好或者太好的地方。例如你在ViewPager中添加了三个Fragment,当加载ViewPager中第一个Fragment时,它会默认帮你预先加载了第二个Fragment,当你加载第二个Fragment时,它会帮你加载第三个Fragment。

这样用户使用的体验是不错的,但是这样可能导致每次滑动切换页面时,显示的数据都不是最新的数据。而是ViewPager预加载从内存中读取的数据。

我们怎么去解决这种问题。及时的去刷新数据。

在fragment中有这样两个个方法 void setUserVisibleHint(boolean isVisibleToUser)、boolean getUserVisibleHint() 这两个方法分别是设置fragment可见状态和获取当前fragment可见

状态,取消预加载我们应该在这里面去进行设置。在BaseFrament中去写这样一段逻辑。

  

public abstract class BaseFragment extends Fragment {

    

    /** Fragment当前状态是否可见 */

    protected boolean isVisible;

    

    

    @Override

    public void setUserVisibleHint(boolean isVisibleToUser) {

        super.setUserVisibleHint(isVisibleToUser);

        

        if(getUserVisibleHint()) {

            isVisible = true;

            visible();

        } else {

            isVisible = false;

            inVisible();

        }

    }

    

    

    /**

     * 可见

     */

    protected void visible() {

        loadData();    

    }  

    /**

     * 不可见

     */

    protected void inVisible() {

        

        

    }

    /**

     * 延迟加载

     * 子类必须重写此方法

     */

    protected abstract void loadData();

}

时间: 2024-10-06 05:49:18

解决ViewPager缓存导致不能实时刷新数据的相关文章

js实现股票实时刷新数据

近来学习炒股,免不了上班时间看盘,总不能光明正大的用电脑看行情,一直盯着手机影响也不好,容易引起“关注”. 所以就想自己做一个网页来达到看盘的目的,一个只显示几个关键数字的网页肯定不会引起怀疑.有想法了,就开始实现吧. 准备工作: 1.数据来源 2.网页数据显示 先帖出来源码,后面讲解 <!-- 说明:股票看盘 作者:黑桃A 时间:2014-04-14 --> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//

Android TabHost切换选项卡实现数据实时刷新

手机界面大小有限,使用TabHost可以达到在一个Activity中放入多个容器(界面)的效果.但存在一个问题是,当数据信息在一个容器(界面)中有所改变时,需要在用户切换选项卡到其他容器(界面)的时候实时刷新数据. 如图,在”发布板报“页面发布新的板报,当用户点击“浏览板报”或者“管理板报”选项卡时要刷新数据——显示出刚刚发布的板报. 解决问题的关键在于对选项卡修改事件的监听,根据Tab ID来调用相应的方法. 核心代码: @Override public void onCreate(Bundl

解决iframe缓存机制导致页面不清除缓存不刷新页面的bug

在使用iframe时,已有页面嵌套了一个iframe页面,当这个页面提交后再次跳转到本页面时,原本iframe内的页面应该刷新数据的,结果未刷新,需要清除缓存后才刷新. 解决方案: var fresh_link=new Date().getTime();//获取当前时间戳,因为该时间戳唯一,将其加到跳转的iframe嵌套页面那,以防止iframe子页面访问过后遗留的缓存 window.open("link.html?+'fresh_link'", "_self");

##解决 ViewPager 调用 notifyDataSetChanged()无刷新:原理、解决办法##

一.原理 转自:http://www.cnblogs.com/maoyu417/p/3740209.html 转载 http://www.67tgb.com/?p=624 最近项目结束,搞了一次代码分享.其中一位同学分享了一下自己在解决问题过程中的一些心得体会,感觉受益匪浅.整理出来,分享给大家. 建议使用自己编译的android os和虚拟机,这样就可以调试android系统中的任何组件.简单说来,深入android源码,去寻找解决问题的答案.这事儿说起来简单,实际做起来还是有些难度的.我也曾

解决ScrollView嵌套ViewPager,导致ViewPager不能滑动的问题

import java.lang.reflect.Field; import java.lang.reflect.Method; /** * 解决ScrollView嵌套ViewPager,导致ViewPager不能滑动的问题 */ public class CustomScrollView extends ScrollView { private GestureDetector mGestureDetector; private int Scroll_height = 0; private i

实时刷新缓存-处理mysql主从延迟的一些设计方案

概要: 在项目开发当中,经常有这样一种场景,对数据库进行添加.修改.删除操作的应用直接连接master库,只对数据库进行查询的应用,会先建立一个中央缓 存,例如redis或者memcache,如果缓存没有命中,那么直接访问slave库.下文会介绍一下在刷新中央缓存时,如果发生主从延迟,应该如何处 理.也即是,当应用System-A 把数据库写入master库的时候,System-B应用在读取slave库的时候,master库的数据还没同步到slave库,如果这个时候刷新缓存 的话,会直接把旧的数

解决JQuery中datatables设置隐藏显示列多次提交后台刷新数据的问题

此次项目开发过程中用到了Jquery的Datatables插件,无疑他是数据列表展示,解决MVC中同步过程中先走控制器后返回视图,查询数据过程中无法提示等待的弊端, 而且他所提供的各种方法也都有较强的实用性.但是再好的程序也会有瑕疵,项目开发中就遇到了其提供的设置隐藏显示列的方法 table.fnSetColumnVis(colShowDic_key[i], true);//colShowDic_key[i]为列的索引.会多次提交刷新数据(有多少列会提交刷新多少次). 为解决这个问题尝试了很多种

flask处理数据,页面实时刷新展示

背景: 后端 flask(python)处理数据,页面实时刷新,类似于打包页面的动态展示,展示效果如图: 代码如下: 前端主要使用以下循环处理, 2--- 2秒刷新一次 {% if 0 == stop %} <meta http-equiv="refresh" content="2;url={{ url_for('test') }}"> {% endif %} html: 1 <html> 2 <head> 3 {% if 0 =

ListView中notifyDataSetChanged()刷新数据不更新原因分析

情景分析: 在开发过程中,我们经常会使用notifyDataSetChanged()实时的让ListView进行刷新操作,但是有的时候却会发现ListView不再刷新了,有的时候却又可以自动刷新. 原因分析: 如上图所示,传递给Adapter的List引用一开始为引用a,但是,当我们在程序中执行刷新更换数据的时候,如果一不小心将List的引用换成了引用b的话,就会导致上述情景的发生.那是因为Adapter刷新的时候,还是用得引用a的数据,而不是引用b: 解决思路: 思路1: 在Adapter中为