0

我有一种“做事”的方法来做我的ListView调用method1()。这是从 调用的method2()method2()可以非常频繁地运行(可能每秒)。我想我有一个问题,如果在完成之前method2()被调用(因此method1()再次调用) ,只运行一次 - 它不会第二次运行。method1()method1

有没有解决的办法?我考虑过在开头和结尾添加一个boolean并将method1()其设置为,但我想不出一种方法可以让它工作。truefalse

编辑:

我做了一些更多的测试,并且该方法被连续调用,所以这个问题已经过时了。我为此道歉。

4

3 回答 3

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 回答
1

使函数同步: http ://docs.oracle.com/javase/tutorial/essential/concurrency/syncmeth.html

这将确保在多线程环境中只有一个线程可以同时访问该函数。

于 2013-09-14T17:15:55.807 回答
-2

为方法 1 提供一个公共静态布尔值并将其设置为 false。如果您愿意,这可以称为“完成”。方法 1 完成后,将该变量设置为 true。

方法 2 可以在方法 1 调用之前运行一个 while 循环。

而(方法1.完成==假){

方法1

于 2013-09-14T17:11:13.693 回答