我正在用 android 编程,我想创建一个延迟。当我添加到我的活动类线程时,应用程序堆栈在将数据实现到变量后,但是当我使用处理程序(带有 postDelay)时它工作正常。1.为什么?
代码(mapView 和 userPointOverlay 是类私有局部变量):
使用线程:
new Thread(new Runnable() //2.5sec delay between switches
{
@Override
public void run()
{
try
{
Thread.sleep(5000);
mapView.getOverlays().remove(userPointOverlay);
} catch (InterruptedException e)
{
e.printStackTrace();
}
}
}).start();
使用处理程序:
handler.postDelayed(new Runnable()
{
@Override
public void run()
{
mapView.getOverlays().remove(userPointOverlay);
}
}, 5000);
2.线程和处理程序之间的主要区别是什么?我知道处理程序在我从它调用他的线程上运行(与主线程 cpu 时间共享),它是正确的吗?
- 看起来我可以从处理程序访问类局部变量。但是在线程中,eclipse让我在线程中编写局部类变量,但是当它启动时,这个局部变量的地址不是线程局部变量,当线程运行时我无法访问这个类局部变量。
谢谢你!!!