怎么定时刷新界面(转)

简介: 怎么定时刷新界面(转)

在做Android客户端软件的时候经常需要刷新某区块内容,比如微博客户端就需要定期检测是否有新发布的微博内容,如果有新微博客户端就显示出来。Android里可以选用两种方式来实现此功能。

方式一、使用Timer(定时器)和TimerTask实现

示例代码:

public class MainActivity extends Activity {
    private TextView msg;
    final Handler handler = new Handler() {
        public void handleMessage(Message msg) {
            switch (msg.what) {
            case 1:
                update();
                break;
            }
            super.handleMessage(msg);
        }
        void update() {
            //刷新msg的内容
        }
    };
    Timer timer = new Timer();
    TimerTask task = new TimerTask() {
        public void run() {
            Message message = new Message();
            message.what = 1;
            handler.sendMessage(message);
        }
    };
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        msg = (TextView) findViewById(R.id.txtMsg);
        msg.setText("你好啊!");
        timer.schedule(task, 1000 * 40, 1000 * 30); //启动timer
    }
    @Override
    protected void onDestroy() {
        if (timer != null) {// 停止timer
            timer.cancel();
            timer = null;
        }
        super.onDestroy();
    }
}

方式二、使用Runnable和Handler

示例代码

public class MainActivity extends Activity {
    private TextView msg;
    private Handler handler = new Handler();
    private Runnable runnable = new Runnable() {
        public void run() {
            this.update();
            handler.postDelayed(this, 1000 * 120);// 间隔120秒
        }
        void update() {
            //刷新msg的内容
        }
    };
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        msg = (TextView) findViewById(R.id.txtMsg);
        msg.setText("你好啊!");
        handler.postDelayed(runnable, 1000 * 60);
    }
    @Override
    protected void onDestroy() {
        handler.removeCallbacks(runnable); //停止刷新
        super.onDestroy();
    }
}

第一种方式还适用于消息通知的方式实现更新,第二种方式通常是主动去检查是否需要刷新。对于定时刷新这种使用第二种方式更

相关文章
实现强制刷新网页的代码
实现强制刷新网页的代码
|
10月前
|
JavaScript
fastadmin 自定义 按钮 动态切换数据 TAB切换
fastadmin 自定义 按钮 动态切换数据 TAB切换
197 0
|
JSON 前端开发 JavaScript
前端重新部署如何通知用户刷新网页?
如果后端可以配合我们的话我们可以使用webSocket 跟后端进行实时通讯,前端部署完之后,后端给个通知,前端检测到Message进行提示,还可以在优化一下使用EvnentSource 这个跟socket很像只不过他只能后端往前端推送消息,前端无法给后端发送,我们也不需要给后端发送。
128 0
前端重新部署如何通知用户刷新网页?
|
开发工具 iOS开发 git
iOS开发 - 类似美团选商品页,从按钮上往上滑动,tableview依然响应,点击按钮,按钮也可响应
iOS开发 - 类似美团选商品页,从按钮上往上滑动,tableview依然响应,点击按钮,按钮也可响应
178 0
iOS开发 - 类似美团选商品页,从按钮上往上滑动,tableview依然响应,点击按钮,按钮也可响应
|
SQL JavaScript BI
FineReport 多个按钮控制数据库中图片动态显示在决策表界面
决策报表中,finereport对图片的显示没有很好的支持(图片组件无法动态显示,只能上传一张图片),现在使用数据库中保存的图片(以blob格式保存的)动态显示在决策报表页面。 这里的需求是使用按钮控制图片动态显示:方法是使用了JS控制文本框的值,让文本框的值变成动态参数(文本框名称)的值(文本框隐藏掉),动态参数控制数据库查询语句SQL。
307 0
FineReport 多个按钮控制数据库中图片动态显示在决策表界面
|
Web App开发 存储 缓存
【译】点击浏览器的前进后退按钮时,页面的缓存机制
【译】点击浏览器的前进后退按钮时,页面的缓存机制
472 0
【译】点击浏览器的前进后退按钮时,页面的缓存机制
|
缓存 区块链 Windows
应用程序图标设置 系统图标缓存问题
应用程序图标设置 系统图标缓存问题
172 0
|
JavaScript 前端开发