Я использую всплывающее окно, чтобы показать статус обновления процессов загрузки фона. Я хочу отменить загрузку между ними. Я пытаюсь достичь этого либо путем добавления кнопки на всплывающее окно, либо с помощью физического подлокотника устройства. Но похоже, что ни одно из генерируемых событий не попадает в приложение.PopUpScreen Блокирующие события в Blackberry
Вот как я создаю всплывающий экран и его отображения т пользователя
DialogFieldManager manager = new DialogFieldManager();
//DialogFieldManager manager = (DialogFieldManager)getDelegate();
statusUpdate = new LabelField("Please Wait...");
manager.addCustomField(statusUpdate);
_gaugeField = new GaugeField("", 0, 100, 0, GaugeField.PERCENT);
manager.addCustomField(_gaugeField);
cncl_Btn = new ButtonField("Cancel",ButtonField.CONSUME_CLICK | ButtonField.FIELD_HCENTER | ButtonField.NEVER_DIRTY);
manager.addCustomField(cncl_Btn);
cancelFlag = 0;
cncl_Btn.setChangeListener(new FieldChangeListener()
{
public void fieldChanged(Field field, int context) {
// Auto-generated method stub
UiApplication.getUiApplication().invokeLater(new Runnable()
{
public void run()
{
cancelFlag = 1;
//onClose();//as this method exited from application
// close();//this method gave me IllegalStateException
}
});
}
});
//BackUpScreen.this.addMenuItem(_viewItem);
popup = new PopupScreen(manager);
UiApplication.getUiApplication().pushScreen(popup);
Скоро afther эту линию я звоню сам процесс загрузки в потоке, как этот
UiApplication.getUiApplication().invokeLater(new Runnable() {
public void run() {
//.... do other stuff I wanted done...
backUpThread = Thread.currentThread();
uploadItems();
}
});
Но если Я нажимаю кнопку отмены во всплывающем окне, чтобы не отвечать. Я проверил это, добавив точку останова в методе прослушивания fieldchange кнопки.
Как это сделать в ежевике?
Спасибо за ответ. Как я могу сделать это правильно? – Zach
У вас уже есть поток в вашей программе, поэтому я предполагаю, что вы знакомы с потоками на Java и на BlackBerry. Вам просто нужно переместить любые блокирующие функции в поток, который не является потоком событий. Как вы это делаете, и интерфейс с вашей программной логикой зависит от вашей программы. – Richard