我有一个“做事”的方法,我的ListView
名为method1()
。这是从method2()
调用的。 method2()
可以非常频繁地运行(可能每秒一次)。我想我有一个问题,如果在method2()
完成之前调用method1()
(因此再次调用method1()
),method1
只运行一次 - 它不运行第二次时间。
有解决方法吗?我考虑过将boolean
添加到method1()
并在开始时将其设置为true
,最后将false
设置为{{1}},但我无法想到我可以采用的方式让这个工作。
编辑:
我做了一些测试,并且这个方法是连续调用的,所以这个问题已经过时了。我为此道歉。
答案 0 :(得分:1)
使功能同步: http://docs.oracle.com/javase/tutorial/essential/concurrency/syncmeth.html
这将确保在多线程环境中只有一个线程可以同时访问该函数。
答案 1 :(得分:0)
为什么不使用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);
只是一招(
)答案 2 :(得分:-2)
为方法1提供一个public static Boolean并将其设置为false。如果您愿意,可以将其称为“完成”。 方法1完成后,将该变量设置为true。
方法2可以在method1调用之前运行while循环。
while(method1.done == false){
} 方法1