[英]Persistent Store in Java Given Runtime Store
我正在尝试创建一个持久性和共享变量,该变量将跟踪Blackberry应用程序中用户可用的通知数量。 此号码显示在主屏幕上,即使在关闭设备电源后也应保留此号码,直到他们自己检查应用程序,然后重置该号码。 我一直在使用单例在下面的后台进程和UI应用程序本身之间共享变量:
import net.rim.device.api.system.RuntimeStore;
public class IconManager {
private static IconManager _instance;
private static final long GUID = 0xab4dd61c5d004c18L;
private int iconCount;
// constructor
private IconManager() {
iconCount = 0;
}
public static IconManager getInstance() {
if (_instance == null) {
_instance = (IconManager) RuntimeStore.getRuntimeStore().get(GUID);
if (_instance == null) {
IconManager singleton = new IconManager();
RuntimeStore.getRuntimeStore().put(GUID, singleton);
_instance = singleton;
}
}
return _instance;
}
public int getCount() {
return iconCount;
}
public void setCount(int count) {
iconCount = count;
}
}
我主要使用此站点来尝试找到持久性存储部分: http : //supportforums.blackberry.com/t5/Java-Development/Storing-persistent-data/ta-p/442747
给定上述运行时存储区,是否可以实现持久存储区? 我本来是想使用Blackberry示例中的代码,但是我对如何执行此操作感到困惑。 mparizeau用户从另一个线程写了以下内容:
persistentCount = PersistentStore.getPersistentObject(0xdec6a67096f833cL);
synchronized (persistentCount) {
if (persistentCount.getContents() == null) {
persistentCount.setContents(new StoreInfo());
persistentCount.commit();
}
}
_data = (StoreInfo)persistentCount.getContents();
现在,当您想要更新它并将其保存到PersistentStore时,您可以看到以下内容:
_data.incElement();
synchronized(persistentCount) {
persistentCount.setContents(_data);
persistentCount.commit();
}
可以在上面的代码中以某种方式使用它吗? 我对Java和BB开发非常陌生,因此可以提供任何帮助。
我不希望使用RunTimeStore,因为即使在设备关闭后,您也希望信息能够保留。 从这个页面
运行时存储不是持久性的。 重新启动BlackBerry设备时,运行时存储中的数据将清除。
尝试这样的事情:
public class IconManager {
private static IconManager _instance;
private final long GUID = 0xab4dd61c5d004c18L;
private PersistentObject store;
private int iconCount;
private IconManager() {
store = PersistentStore.getPersistentObject(GUID);
synchronized(store) {
if(store.getContents() == null) {
store.setContents(new Integer(0));
store.commit();
}
}
iconCount = ((Integer)store.getContents()).intValue();
}
public static IconManager getInstance() {
if (_instance == null) {
_instance = new IconManager();
}
return _instance;
}
public int getCount() {
return iconCount;
}
public void setCount(int count) {
iconCount = count;
synchronized(store) {
store.setContents(new Integer(iconCount));
store.commit();
}
}
}
Blackberry OS 5和更高版本内置了SQLite。您可以使用它代替持久性存储。 (它具有类似于jdbc的API)。 BBOS 5已经问世了一段时间。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.