Android 定时器Timer的使用

     定时器有什么用

       在我们Android客户端上有时候可能有些任务不是当时就执行,而是过了一个规定的时间在执行此次任务。那么这个时候定时器的作用就非常有用了。首先开启一个简单的定时器

复制代码
Timer timer = new Timer();
    TimerTask task = new TimerTask() {
        @Override
        public void run() {
            try {
                holder.post(url,"",200);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    };
复制代码

       

 

        现在我就相当于定义了一个定时器,我现在的定时器是向服务器发送Post请求来返回数据刷新到我的界面上那么接下来就是开启定时器了。开启定时器那就非常简单了  

       

timer.schedule(task,0,10000);

       

        开启定时器特别简单基本上一句话就搞定了
        开启定时器需要三个参数
        1.就是上面所写的你要做的事情 ,上面我写的上向网络发送请求那么这里就时开启定时器请求网络
        2.这个参数是你要多长时间后执行这个定时器,这里我写的是0,那么就是0秒后执行我的定时器。
        3.这个是最重要的这就是你每次执行时间的间隔 我这里就是说每10秒向网络发送一次请求如果写成1000就是每一秒向网络发送一次请求

        如果第三个参数不写的话那么定时器就是几秒后执行 那么定时器只执行一次就不在执行了

       定时器的请求周期

        
        其实定时器如果不销毁的话是一直执行的但其实定时器如果一直执行的话那么我们的程序根本就撑不了多长时间就会崩溃所以说定时器用完就要及时的关闭
        定时器的开启在写Fragment或者Activity的时候我一般会写在onStart里面
        如果销毁的时候会写在onStop里面销毁定时器也非常简单
       
timer.cancel();

 

        基本上这一句话就搞定了执行这句话说明是注销定时器
        当我们离开本界面的时候就执行这句话那么定时器就不会在执行了当我们进入本界面在onStart执行定时器那么就又开启了定时器所以说这样就写了一个简易版的定时器

复制代码
public class WhiteFragment extends Fragment{

Handler handler = new Handler(){
     public void handleMessage(Message msg){
        switch(msg.what){
            case 200:
             "执行我要做的事情用来刷新UI"
      }
   }
}

   private String url = 
    "http://ip地址:8080/2017guosaiserver/GetAllSense";
    HttpHolder holder = new HttpHolder(handler);

   Timer timer = new Timer();
    TimerTask task = new TimerTask() {
        @Override
        public void run() {
            try {
                holder.post(url,"",200);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    };
}
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.whitefragment,null);
        return view;
}
 @Override
    public void onStart() {
        super.onStart();
        timer.schedule(task,0,10000);
    }

    @Override
    public void onStop() {
        super.onStop();
        timer.cancel();
    }
}
复制代码

 

             一个简单的定时器请求网络就完成了 HttpHolder holder = new HttpHolder(handler); 这是自己写的网络请求类直接调用输入url的服务器地址获得的就是服务器发来的JSON格式的数据
             在onStop里面注销定时器那么每次离开本界面的时候那么定时候就销毁了再回到本界面的时候那么就执行onStart里面的开启定时器那么定时器就开启了所以这样就避免了因为定时器开
       启而使程序崩溃
    


  

    

 

posted @   张亚楠  阅读(38235)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!
点击右上角即可分享
微信分享提示