关于Runable、Handler的循环

来源:互联网 发布:csv导入oracle数据库 编辑:程序博客网 时间:2024/05/22 16:31

最近做一个推送的功能,在Service里用某一个字段(条件)去查询后台中的一个数据,然而在Service里得到这个字段的时候,有时候由于网络问题或者其他因素会得不到,这个时候就需要一个判空,当他为空的时候,那我们就去重新请求这个这段,每2秒一次,直到获取到!其实这里可以用到定时器等方法,这里我用了Handler去执行

具体如下:

private Handler handler=new Handler();int pp = 0;

new Runnable() {    @Override    public void run() {        boolean b = false;        //这里可以执行一些网络请求的操作,但是这里就假装了        pp++;        if (!b) {            if (pp == 10) {//pp的值为10算请求成功                b = true;                Log.e("b", "pp的值为" + pp + "算成功");            } else {                //如果请求失败的话,每隔2秒再次请求                handler.postDelayed(this, 2000);            }        }    }}.run();

这样,只要pp!=10,每隔2秒的时候handler就会post这个runable,直到pp=10

Runable不是一个线程,但是一般线程会去调用Runable