我正在尝试在Android中使用锁来检测活动何时处于活动状态,我的应用流程如下:
我正在使用按服务运行的线程,我有一个活动。 线程将检查活动是否打开,
1- If it is open/active then it will NOT update the DB.
2- If the activity/active isn't open then it will update the DB.
以下代码是否正确,
在活动方面,我正在这样做,
public void onCreate(Bundle savedInstanceState) {
GlobalVars.setActivityActive()
}
在线程方面,我正在这样做,
if (GlobalVars.isActivityActive())
do nothing
else
update DB
全球变量类就是这个
public class GlobalVars extends Application {
private boolean ActivityActive;
public boolean isActivityActive() {
synchronized (this) {
return ActivityActive;
}
}
public void setActivityActive(boolean ActivityActive) {
synchronized (this) {
this.ActivityActive = ActivityActive;
}
}
}
我的问题是这个,是否正确使用synchronized?或者我应该这样做,
public boolean isActivityActive() {
return ActivityActive;
}
更新
这就是我最终根据答案/评论使用它的方式
private volatile boolean activityActive;// this would be enough to be thread safe
答案 0 :(得分:0)
是的,那会有用。
但是,这很疯狂。如果你要同步#34;这个"你可以通过同步方法使它变得更简单。 ...那么ReentrantLock
是什么?
...你可以通过使用AtomicBoolean使整个事情变得更简单。