Android定时向服务器发送请求

作者: i小灰 | 来源:发表于2020-10-20 10:48 被阅读0次

前言

项目中有需求就是没过一断时间去向服务器发送请求然后去刷新UI其实思路还是比较多的但是我还是选择了CounterDownTimer方法 。

CounterDownTimer 解析

话说其实用法很简单就是通过一个onTick方法来实现定时执行。但是怎么去实现了,对就是为什么。没看源码之前我猜它的大概思路是:

获取系统时间用来判断
通过handler机制切换线程
一些具体完成开始的操作
于是乎我决定从CounterDownTimer入手简单一看他重写两个方法以及一个构造方法:

onTick
onfinsh

点击CounterDownTimer一看

  public synchronized final void cancel() {
        mCancelled = true;
        mHandler.removeMessages(MSG);
    }

可见handler猜测是对的我们取消发送时它内部是直接移除的
其实到这一目了然我们看看我们调用start()时他做了什么:

   public synchronized final CountDownTimer start() {
        mCancelled = false;
        if (mMillisInFuture <= 0) {
            onFinish();
            return this;
        }
        mStopTimeInFuture = SystemClock.elapsedRealtime() + mMillisInFuture;
        mHandler.sendMessage(mHandler.obtainMessage(MSG));
        return this;
    }

也就是判断是否完成你发送的时间是否完成如果没完成的话通过mHandler 继续发送消息同时获取一下系统消息来判断一下。
那他是怎么延迟的呢?

当然是调用 sendMessageDelayed(obtainMessage(MSG), delay);来设置每隔多少秒发送。到这也没啥了。用法更简单,看下方使用方法:

CountDownTimer 倒计时,可以在主线程使用。

定义一个全局值

private CountTimer timer=null;
    //定时列表刷新任务
    class CountTimer extends CountDownTimer {

        public CountTimer(long millisInFuture, long countDownInterval) {
            super(millisInFuture, countDownInterval);
        }

        @Override
        public void onTick(long millisUntilFinished) {
            //设置间隔时间进行的请求
            //getData();
        }
        @Override
        public void onFinish() {
        }
    }

使用方法:

        //这里所有的参数都是毫秒,使用秒需要 time乘以1000
        //long millisInFuture 倒计时总时间
        //long countDownInterval 间隔多久倒计时一次
        //以下参数是 一共60秒,每10秒倒计时一次
    if (timer==null){
            timer=new CountTimer(60*1000,10*1000);
        }
        timer.start();
    @Override
    public void onDestroyView() {
        super.onDestroyView();
        //销毁时关闭刷新
        if(timer!=null){
            timer.cancel();
        }
    }

相关文章

  • Android定时向服务器发送请求

    前言 项目中有需求就是没过一断时间去向服务器发送请求然后去刷新UI其实思路还是比较多的但是我还是选择了Counte...

  • websocket——通信梳理(短轮询、长轮询、socket、w

    短轮询polling 1、由客户端定时向服务器发送请求,服务器返回数据。 2、缺点:必须由客户端发起请求,服务器才...

  • websocket 消息推送

    实现web端的推送目前有几种方式: * 轮询 客户端定时向服务器发送ajax请求,服务器接到请求后马上返回响应...

  • websocket的向下兼容方案

    轮询:客户端定时向服务器发送Ajax请求,服务器接到请求后马上返回响应信息并关闭连接。优点:后端程序编写比较容易。...

  • 轮询与连接

    1. 轮询:客户端定时向服务器发送Ajax请求,服务器接到请求后马上返回响应信息并关闭连接。优点:后端程序编写比...

  • iOS中的各种Timer(含实例代码)

    编写App工程中,会遇到各种定时器的问题:比如某个页面上的数据定时刷新,需要在定时器中反复向服务器发送请求;首页广...

  • 关于Ajax学习中的缓存问题

    向服务器发送请求 如需将请求发送到服务器,我们使用 XMLHttpRequest 对象的 open() 和 sen...

  • 5.axios框架的基本使用

    axios框架支持多种请求方式向服务器发送请求数据。 tips: axios(config)默认发送的是get请求...

  • ajax-向服务器发送请求

    XMLHttpRequest 对象用于和服务器交换数据。 向服务器发送请求 如果需要将请求发送到服务器,我们使用X...

  • 一次完整的http请求

    1:建立TCP连接 2:web浏览器向web服务器发送请求行 3:web浏览器发送请求头 4:web服务器发送应答...

网友评论

    本文标题:Android定时向服务器发送请求

    本文链接:https://www.haomeiwen.com/subject/zwnrmktx.html