Android 处理器,我想定期运行

Android 处理器,我想定期运行,android,handler,ui-thread,Android,Handler,Ui Thread,Using handler希望定期运行计数为0,如果计数为1,请修复此代码 mRunnable = new Runnable(){ @Override public void run() { if (count == 0) { setImage(); count = 1; } else { weather = mContentResolver.getType(mUri); setWeather(weather);

Using handler希望定期运行计数为0,如果计数为1,请修复此代码

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);

在这种情况下,您应该选择定时器和定时器任务。下面是一个小例子:

//Declare the timer
Timer t = new Timer();
//Set the schedule function and rate
t.scheduleAtFixedRate(new TimerTask() {

    @Override
    public void run() {
        //Called each time when 1000 milliseconds (1 second) (the period parameter)
        //put your code here
    }

},
//Set how long before to start calling the TimerTask (in milliseconds)
0,
//Set the amount of time between each execution (in milliseconds)
3000);
希望这就是你所需要的。

试试下面的方法

 private Handler handler = new Handler();
 handler.post(timedTask);

private Runnable timedTask = new Runnable(){

  @Override
  public void run() {
   // TODO Auto-generated method stub
   cnt++;
   if(cnt==0)
   {
    //set you view or update your 
   }

   handler.postDelayed(timedTask, 500);
  }};
}
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);// move this inside the run method
    } 
};
mRunnable.run(); // missing
也检查一下这个


代码有什么问题?你忘了调用
mRunnable.run()
?有什么问题吗,伙计>?@Raghunandan-uhm。。。没问题,但此代码不会定期重复执行。@AndroidKiller没问题,但此代码不会定期重复执行。@Cole“Cole9”Johnson他是老板,他命令我们这样做。那就去做吧p;)。否则他会削减我们的工资。@Raghunandan我认为handler没有任何定期重复代码的功能。还是有?。选中此选项,您也可以使用处理程序。此外,您不能从计时器更新ui,因为它运行在不同的线程
setImage()
可能正在设置image ie更新UI,在这种情况下,您可以在setImage()方法本身中使用runOnUiThread()。我们可以确定使用的处理程序,正如@altaf在其回答中所说的。但那个代码看起来反复调用postDelayed,这看起来有点奇怪,但你可以把我的回答当作另一种方式来做:)!!!!!!!!!!!!!!!!感谢U我太爱你了@Raghunandanwouldn'm_Handler.post(mRunnable)比mRunnable.run()好吗?@gopi1410是的,你可以这样做(android方式)