如何启动/停止Runnable / Handler?

时间:2012-05-15 12:56:09

标签: android handler runnable

我正在尝试维护Webservice和Android应用之间的数据库同步。 下面的代码正在运行,但我遇到了一些问题:

  • 每次进入App的主页时,都会启动一个新的无限过程。
  • 流程永无止境

任何人都可以按照我的意愿解释如何开始和停止这个过程吗? 我希望这个过程每5分钟运行一次,但只需一次,当应用程序打开时。

public void onCreate(Bundle savedInstanceState) {   
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    final Handler handler = new Handler();
    final Runnable r = new Runnable() {
        public void run() {
            // DO WORK
            Mantenimiento();
            // Call function.
            handler.postDelayed(this, 1000000);
        }
    };
    r.run();
}

3 个答案:

答案 0 :(得分:3)

使用TimerTask:

http://thedevelopersinfo.wordpress.com/2009/10/18/scheduling-a-timer-task-to-run-repeatedly/ http://android.okhelp.cz/timer-simple-timertask-java-android-example/

当polean为true时,

可以取布尔值并运行循环,并且让其他线程休眠,同时让app make Boolean为false。

答案 1 :(得分:0)

将使用此代码:

public void onCreate(Bundle savedInstanceState) {   
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    final Handler handler = new Handler();
    final Thread r = new Thread() {
        public void run() {
            // DO WORK
            Mantenimiento();
            // Call function.
            handler.postDelayed(this, 1000000);
        }
    };
    r.start(); // THIS IS DIFFERENT
}

答案 2 :(得分:0)

每隔5分钟?你甚至知道handler.postDelayed(this, 1000000);的作用吗?它每16.7分钟启动一次。找出如何将分钟转换为毫秒并不是很困难。

handler.removeCallbacks()以及您在postDelayed()之前检查的布尔变量已被提及。