Android:处理程序postdelay方法是否使用更新的私有变量执行?
我想问一个一般性的延迟后问题。所以我在我的应用程序中使用了这种方法,但它似乎并不像我预期的那样工作 我想检查的是说:Android:处理程序postdelay方法是否使用更新的私有变量执行?,android,private,android-handler,postdelayed,Android,Private,Android Handler,Postdelayed,我想问一个一般性的延迟后问题。所以我在我的应用程序中使用了这种方法,但它似乎并不像我预期的那样工作 我想检查的是说: private boolean privateVariable = false // private instance field new Handler().postDelayed(new Runnable() { @Override public void run() { if(privateVariable))
private boolean privateVariable = false // private instance field
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
if(privateVariable)) {
//DO SOMETHING
}
}
}, 5000);
privateVariable在延迟的5秒内更新为true。
做什么事情会被执行
换句话说,当我们使用postdelay方法时,我们是在延迟时保存变量并在一定程度的延迟后使用它,还是在5秒后执行run()时使用更新的变量?它似乎在我的应用程序中保存了它,所以即使我在5秒延迟之间更改了它,它还是使用了我创建新处理程序时的原始处理程序
如果它使用保存的值,您能告诉我在一定时间后使用更新值的方法吗
提前谢谢。
是否执行了一些操作???
以及Log.d
说了些什么?这取决于哪个线程正在更新变量,哪个线程附加了处理程序。如果您的处理程序是在主线程上创建的,并且您正在从某个后台线程更新变量,那么您将需要同步,比如将变量声明为volatile。@Jagroshan感谢您的评论。这就是我的应用程序的运行方式。当它启动时,它会启动一个服务,该服务在START_STICKY with startForeground()中后台运行,因为我希望在后台运行该服务,同时不容易被杀死。在该服务中,我有一个包含私有变量的活动,它在同一个活动中得到更新。处理程序也在同一活动中。还有什么建议吗?@pskink谢谢你的评论。显然,它似乎使用了保存的值。