6

WebサービスとAndroidアプリの間でデータベースの同期を維持しようとしています。以下のコードは機能していますが、いくつかの問題が発生します。

  • アプリのメインページに移動するたびに、新しい無限のプロセスが開始されます。
  • プロセスは決して終わらない

誰かが私が望むようにこのプロセスを開始および停止する方法を説明できますか?
このプロセスを5分ごとに実行したいのですが、アプリが開いているときに1回だけ実行します。

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

また

ブール値を取り、ブール値がtrueのときにループを実行して他のスレッドをスリープ状態にし、アプリを離れている間はブール値をfalseにすることができます。

于 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 に答える