Я делаю приложение BlackBerry, и мне нужно разделить общую переменную в моем приложении между различными точками входа. Переменная представляет собой простой счетчик, который отслеживает количество уведомлений на главном экране значка. Каждый раз, когда запланированное фоновое приложение обновляется, оно будет увеличивать переменную count, которая затем используется setValue (count) для его отображения. Кто-то предложил использовать подход singleton и runtimestore. Я искал этот метод и нашел фрагмент кода на форуме:
Integer i = new Integer(0);
RuntimeStore.getInstance().put(ID, i);
i.setValue(7);
//On other module:
Integer i = (Integer) RuntimeStore.getInstance().get(ID);
Моя проблема в том, что я до сих пор не знаю, как правильно использовать этот код, я также посмотрел на
http://docs.blackberry.com/en/developers/deliverables/17952/CS_creating_a_singleton_by_using_rutnime_store_1554335_11.jsp
но я не уверен, как реализовать это в моем коде. Я пытаюсь увеличить переменную iconCount, которая должна поддерживаться согласованной в фоновом и переднем процессах (т. Е. Если пользователь проверяет приложение, уведомления будут сброшены на 0).
public void setVisible1(boolean visible, int count) {
if (_indicator != null) {
if (visible) {
_indicator.setVisible(true);
_indicator.setValue(++count); //incrementing count
UserInterface.iconCount++; // also trying here
} else {
_indicator.setVisible(false);
}
}
}
Использование RuntimeStore.getInstance (). Put (GUID, countsIcon); в моем классе UserInterface создает ошибки, вероятно, потому что я либо использую его неправильно или не в правильном месте. Я только недавно начал разработку Blackberry и Java, так что это очень ново для меня. Я приложил основную часть своего кода ниже, если это поможет.
Еще раз спасибо за любую помощь, это было бы очень признательно!
public class UserInterface extends UiApplication {
static int iconCount; //stores the value of the icon number
public static void main(String[] args) {
if (args != null && args.length>0 && "startVibrate".equals(args[0])){
scheduleVibrate();
}
else{
UserInterface theApp = new UserInterface();
theApp.enterEventDispatcher();
}
}
static MyAppIndicator SV = new MyAppIndicator();
private static void scheduleVibrate()
{
SV.setVisible1(true,iconCount);
Alert.startVibrate(2550);
ApplicationDescriptor current = ApplicationDescriptor.currentApplicationDescriptor();
current.setPowerOnBehavior(ApplicationDescriptor.DO_NOT_POWER_ON);
ApplicationManager manger = ApplicationManager.getApplicationManager();
manger.scheduleApplication(current,System.currentTimeMillis()+1000,true);
}
public UserInterface() {
pushScreen(new UserInterfaceScreen());
}
}
public class MyAppIndicator{
public ApplicationIndicator _indicator;
public static MyAppIndicator _instance;
MyAppIndicator () {
setupIndicator();
}
public static MyAppIndicator getInstance() {
if (_instance == null) {
_instance = new MyAppIndicator ();
}
return(_instance);
}
public void setupIndicator() {
//Setup notification
if (_indicator == null) {
ApplicationIndicatorRegistry reg = ApplicationIndicatorRegistry.getInstance();
_indicator = reg.getApplicationIndicator();
if(_indicator == null) {
ApplicationIcon icon = new ApplicationIcon(EncodedImage.getEncodedImageResource ("notificationsdemo_jde.png"));
_indicator = reg.register(icon, false, true);
_indicator.setValue(0);
_indicator.setVisible(false);
}
}
}
public void setVisible1(boolean visible, int count) {
if (_indicator != null) {
if (visible) {
_indicator.setVisible(true);
_indicator.setValue(++count); //incrementing count
UserInterface.iconCount++; // also trying here
} else {
_indicator.setVisible(false);
}
}
}