Android定时执行任务

原创 2015年11月19日 00:13:14

在Android中,执行定时任务有多种方法,目前工作中有用到两种方法,现总结如下:


1.使用Handler.postDelayed()方法
有如下需求:定时不断向LinearLayout中添加TextView
private Handler mHandler = new Handler();  //初始化Handler
//初始化布局容器
LinearLayout line = new LinearLayout(this);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.MATCH_PARENT);
line.setLayoutParams(params);
line.setOrientation(LinearLayout.VERTICAL);
//实际需要执行的任务
Runnable mRunnable = new Runnable(){
   @Override
public void run() {
TextView tv = new TextView(MainActivity.this);
tv.setText("SSSSSSSSSS");
line.addView(tv);
//每隔5秒执行该任务
mHandler.postDelayed(mRunnable,5000);
}
};
//1秒之后开始执行任务
mHandler.postDelayed(mRunnable,1000);


2.使用ScheduledExecutorService
首先初始化线程池:
private static ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor();
上面的代码是初始化一个线程池,里面只有一个线程
service.scheduleAtFixedRate(mRunnable, 0, 1000, TimeUnit.MILLISECONDS);
这个方法有四个参数:
1.mRunnable:实际需要执行的任务
2.0:延迟几秒执行
3.1000:这里是1秒之后执行,即间隔时间
4.时间单位


注意:使用这种方式的时候,在任务里面不能进行UI更新,需要使用异步处理Handler机制完成。
因此任务Runnable可以写成:
Runnable mRunnable = new Runnable(){
mHandler.sendEmptyMessage(0);
};
然后在这里刷新UI
mHandler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
TextView tv = new TextView(MainActivity.this);
tv.setText("SSSSSSSSSS");
line.addView(tv);
}
};


线程间的通信机制:

使用Handler来完成。

方式1:当有两个线程,一个线程(A)持有另外一个线程(B)的Handler,然后在线程A中发送消息,线程B

接收到消息并做处理(线程的创建不能直接new,需要使用线程池)

方式2:通过handler.post(Runnable)方法。这里只是将runnable的要执行的方法放入到主线程去执行,因此在这里

不能做耗时的操作,如果要在runnable里面做耗时的操作,那么handler.post(Runnable)这句必须放在子线程中

Android 定时任务的多种实现方式

定时任务实现总结在Android中这算是一个常用的功能了,,有兴趣一起来探讨下可以Android消息机制首先来了解一下Android的消息处理机制 即Handlerd的运行机制,handler的运...
  • u014492609
  • u014492609
  • 2016年05月22日 20:51
  • 44754

多种方式实现Android定时任务,哪一款是你的FEEL?

Android实现定时任务
  • s003603u
  • s003603u
  • 2016年11月25日 18:08
  • 6926

android 定时任务的几种实现方式

android里有时需要定时循环执行某段代码,或者需要在某个时间点执行某段代码,这个需求大家第一时间会想到Timer对象,没错,不过我们还有更好的选择。 一、Timer 实现定时任务 Ti...
  • dxpqxb
  • dxpqxb
  • 2013年03月11日 15:16
  • 19658

android service 后台执行定时任务

关于service 大家应都知道是android 四大组件之一,用来执行后台任务的。 如果还不太了解service 可以看看郭大神写的Android Service完全解析,关于服务你所需知道的一切,...
  • csd_xiaojin
  • csd_xiaojin
  • 2016年03月06日 18:07
  • 17804

Android后台运行的定时器实现

Android后台运行定时器,方便我们执行定位跟踪等任务需求。 下面简要说明实现Android后台定时器的要点, 文章末尾可以下载到工程代码,可直接编译执行。AndroidManifest.xml 文...
  • langeldep
  • langeldep
  • 2014年08月31日 12:00
  • 29087

Android实现定时执行某个任务

在 Android中,有时候我们需要固定几秒后去执行一个动作,比如进入某个页面然后过几秒去刷新,下面看看怎么实现:方式一(使用handler): new Handler(new Handler....
  • Small_Lee
  • Small_Lee
  • 2016年01月26日 12:51
  • 2029

Android 闹钟机制实现定时任务

Android的闹钟实现机制, 需要调用AlarmManager.set()将闹铃时间记录到系统中,当闹铃时间到后,系统会给应用程序发送广播,我们只需要去注册广播接收器就可以了。 本文分三部分讲...
  • ckdroid
  • ckdroid
  • 2015年02月06日 16:25
  • 4090

Android利用AlarmManager执行定时任务

Android中的AlarmManager是一个全局定时器
  • fxdaniel
  • fxdaniel
  • 2014年11月15日 21:03
  • 8305

Android中定时执行任务的3种实现方法

在Android开发中,定时执行任务的3种实现方法: 一、采用Handler与线程的sleep(long)方法(不建议使用,java的实现方式) 二、采用Handler的postDelayed...
  • u012372365
  • u012372365
  • 2016年07月26日 13:07
  • 3131

android定时器实现每天定时执行任务

  • 2014年08月20日 09:53
  • 1.3MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android定时执行任务
举报原因:
原因补充:

(最多只允许输入30个字)