【发布时间】:2015-09-27 07:59:15
【问题描述】:
我的应用需要在普通模式(使用 GUI)、后台模式(更新数据...)下运行并接收推送消息。
现在我想访问主要数据并检查 GUI 当前是否正在运行(同时更新 GUI 元素)。目前我通过在静态成员中存储对主要活动的引用来解决它。所以我的代码如下所示:
public class MainActivity extends Activity {
public static MainActivity runningInstance = null;
public final static Object syncObject = new Object();
@Override public void onCreate(Bundle savedInstanceState) {
synchronized(syncObject){
runningInstance = this;
}
}
@Override protected void onDestroy() {
synchronized(syncObject){
runningInstance = null;
}
}
//...
}
如您所见,我使用通用对象来同步对静态成员的访问,因为我有过没有这样做就得到 NullPointerException 的情况。
然后我在推送接收器和后台循环中使用它,如下所示:
synchronized(MainActivity.syncObject){
if(MainActivity.runningInstance != null){
//Here I know that the GUI is currently running
//Update GUI elements etc...
}
}
现在我的问题是:有什么标准方法可以做到这一点,因为我认为从许多其他类访问这个静态成员不是很优雅?
【问题讨论】:
标签: java android static-members