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定时执行任务总结demo

  • 2016-03-28 09:41
  • 23.78MB
  • 下载

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

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

Android中定时执行任务的基本实现方式(未完待续)

一、使用Java原生的Timer和TimerTask(实质上是Object.wait()). 这一机制的实现主要有四部分组成,Timer,TimerTask,TimerThread,TimerQue...

android 计数器---定时执行任务

定时执行任务,大家都会想到timer或者thread,确实,这两者都能达到。 好吧,还是先说需求 自动每隔10秒执行一次任务,如果点击了某个按钮,则立即执行任务,并重新计时,也就是说从点击按钮开始...

在Android开发中,定时执行任务的3种实现方法:

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

Android四大组件之service(二)——用service、scheduleAtFixedRate写一个后台定时执行任务

点击查看原文上篇介绍了service及其生命周期,这里scheduleAtFixedRate介绍java api中可直接查;这里写一个后台定时执行任务的例子,直接上代码:ScheduledThread...

Android定时执行任务的两种办法

一般来说,在Android中有很多地方都要用到定时执行或者延迟执行,这里给记录一下两种比较常见的方法 1.采用Handler的postDelayed(Runnable, long)方法,比较简单也很实...

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

转载于: http://blog.csdn.net/fancsxx/article/details/8811565 在Android开发中,定时执行任务的3种实现方法: 一、采...

使用AlarmManager实现Android应用每天定时执行任务

介绍android官方文档:AlarmManager 在Android平台,除了使用AlarmManger外,还可以使用Timer或者Handler来实现定时任务,但这两种方式定时并不会太准确;因此...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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