6

我正在尝试在 Web 服务和 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();
}
4

3 回答 3

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-例子/

或者

可以采用布尔值并在布尔值为真时运行循环,并使其他线程进入睡眠状态,而离开应用程序则使布尔值为假。

于 2012-05-15T13:01:10.610 回答
1

每 5 分钟?你甚至知道是handler.postDelayed(this, 1000000);做什么的吗?它每 16.7 分钟启动一次可运行文件。找出如何将分钟转换为毫秒并不难。

handler.removeCallbacks()postDelayed()并且已经提到了您之前要检查的布尔变量。

于 2017-10-02T12:41:01.457 回答
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
}
于 2012-05-15T13:07:54.970 回答