2 bluetooth99 bluetooth99 于 2013.07.31 15:52 提问

固定周期运行线程handler

如题,我写的代码如下,目前代码不能重复周期执行。

请牛人出来帮忙解决。

mRunnable = new Runnable(){
@Override
public void run() {
if(count == 0){
setImage();
count = 1;
}
else{
weather = mContentResolver.getType(mUri);
setWeather(weather);
count = 0;
}
} 
};
mHandler = new Handler();
mHandler.postDelayed(mRunnable, 3000);

3个回答

loFataMer
loFataMer   2013.07.31 16:29
已采纳
 m_Handler = new Handler();
 mRunnable = new Runnable(){
   @Override
   public void run() {
   if(count == 0){
   // do something
   count = 1;
   }
   else if (count==1){
    // do something
   count = 0;
   }
   m_Handler.postDelayed(mRunnable, 3000);// 将这个移动到run method中
   } 
   };
  mRunnable.run(); // missing
Jave_
Jave_   2013.07.31 16:07

你可以去看下TimerTask

cj6585256
cj6585256   2013.07.31 16:09

new Handler().post(mRunnable);就OK了吧

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
newScheduledThreadPool创建可间隔时间执行的线程池
newScheduledThreadPool,创建一个可间隔时间执行的线程池,并且可以指定数量,以前确实没这么写过,都是写while循环,看来后面我要恶补一下线程池的技术了,下面是我抽出来的部分代码。 package ess.tester;import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecu
Handler.post执行时所在线程分析
问题描述: Android中Handler.post可以用来修改UI布局,handler.post(Runnable r)方法是将Runnable对象发送到主线程中执行,并且源码注释如下 * Causes the Runnable r to be added to the message queue. * The runnable will be run on the thread to which this handler is * attached. 注释的意思是runnable会在handle
实现一个所有任务都是按各自自定义的时间间隔周期性执行的线程池
实现一个所有任务都是按各自自定义的时间间隔周期性执行的线程池,用户可以控制是否继续发送、发送多少次、发送的时间周期等
Handler.postDelayed(new Runnable)是否运行在主线程
知识点 postDelayed(new Runnable())是否运行在主线程中? 答案 是的。 这个 new Runnable() 依附于创建Handler的线程, 代码如下 在绝对的UI线程中打印线程ID:System.out.println("UI Thread = " + Thread.currentThread().getId()); 下面在posdelayed中打印运行线程的
Handler退出,线程退出
looper退出 当我们调用Looper的quit方法时,实际上执行了MessageQueue中的removeAllMessagesLocked方法,该方法的作用是把MessageQueue消息池中所有的消息全部清空,无论是延迟消息(延迟消息是指通过sendMessageDelayed或通过postDelayed等方法发送的需要延迟执行的消息)还是非延迟消息。 当我们调用Looper的
使用Handler.post管理线程
使用Handler管理线程 步骤: 1. 申请一个Handler对象 Handler handler = new Handler(); 2. 创建一个线程 {继承Thread类或者实现Runnable这个接口} 使用Runnable创建一个内部匿名类对象updateThread(要复写run方法) 3. 使用handler的post方法将线程加入到线程队列中 handler.pos
在子线程中利用主线程的Handler的post()方法
package cc.testui1; import android.os.Bundle; import android.os.Handler; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextVi
做异步的话需要关闭Handler吗?如何关闭?直接关闭线程不可以吗?
activity onDestory() 的时候调用          handler.removeCallbacksAndMessages(null); andler可以在任何有Looper的线程中创建,当然通过Handler提交的事务也是在对应的那个线程中执行的。所以,如果你的Handler是在子线程中创建的,退出字线程HandlerThread的Looper对象,不在操作Message
启动Thread、调用Handler
1. 定义 handler: 2. 定义 worker thread 编写worker thread处理内容 调用handler发送消息 3. 在handler的handleMessage函数中完成worker thread发送消息的消息处理操作 4. button绑定监听器,并在监听器中启动work thread
多线程中handler和Message的用法
1,创建一个子线程new Thread(Runnable).start(); 2,在Runnable的run方法中使用Message.obtain()或者Message对象,传参,然后用主线程中的myHandler.sendMessage(message)来发送message 3,主线程创建new  Handler()对象去处理message。这样就可以把子线程中的数据传递到主线程中来处理