0

私は、ListView呼び出されたを「行う」メソッドを持っていmethod1()ます。これは から呼び出されmethod2()ます。 method2()非常に頻繁に (おそらく毎秒) 実行できます。が終了する前に呼び出された場合(したがって、再度method2()呼び出す) 、1回だけ実行され、2回目は実行されないという問題があると思います。method1()method1()method1

これを回避する方法はありますか?最初と最後に a を追加してに設定することを考えbooleanましmethod1()たが、これを機能させる方法が思いつきません。truefalse

編集:

さらにテストを行ったところ、メソッドが連続して呼び出されていたため、質問は廃止されました。申し訳ありません。

4

3 に答える 3

1

関数を同期させます: http://docs.oracle.com/javase/tutorial/essential/concurrency/syncmeth.html

これにより、マルチスレッド環境では、関数に同時にアクセスできるスレッドは 1 つだけになります。

于 2013-09-14T17:15:55.807 に答える
1

TimerTask を使用しない理由

Timer timer = new Timer();

        TimerTask tt = new TimerTask()
        {

            @Override
            public void run()
            {
                if(!isRunning)
                {
                    // Repeat You can update UI using runOnUiThread(runnable)
                }
                if(jobDone)
                {
                    this.cancel();

                }
            }
        };
        timer.schedule(tt, 0, 1);

ただのトリック

于 2013-09-14T17:29:14.047 に答える
-2

メソッド 1 に public static Boolean を指定し、false に設定します。必要に応じて、これを「完了」と呼ぶことができます。方法 1 が完了したら、その変数を true に設定します。

方法 2 は、method1 呼び出しの前に while ループを実行できます。

while( method1.done == false ) {

メソッド1

于 2013-09-14T17:11:13.693 に答える