我正在使用AttachmentDownloadManager
类下载方法将电子邮件附件下载到设备。我正在显示进度屏幕,同时附件被下载到设备。在downloadCompleted()
事件监听器方法中,我是试图停止/关闭进度屏幕但无法执行此操作。
以下是代码段:
attachmentDownloadMngr = new AttachmentDownloadManager();
attachmentDownloadMngr.download(attachmentBodyPart, null, new IGAEmailAttachmentListener(this));
以下是DownloadProgressListener
事件监听器方法:
public void updateProgress(Object element, int current, int total)
{
synchronized(UiApplication.getEventLock())
{
Ui.getUiEngine().pushGlobalScreen(progressScreen,1,UiEngine.GLOBAL_QUEUE);
}
}
public void downloadCompleted(Object element)
{
synchronized(UiApplication.getEventLock())
{
Ui.getUiEngine().popScreen(progressScreen);
}
}
public void downloadCancelled(Object element)
{
}
progressScreen
是PopupScreen
的实例,我在其中显示guagefield
。即使在附件下载完成后,进度屏幕也不会收到任何事件。
请帮我解决这个问题。
答案 0 :(得分:0)
每次收到updateprogress()
的回调时,你似乎都在推动全局屏幕。我不会这样做。我开始下载时,我宁愿用globalscreen
推送gaugefield
,然后使用gaugeField.setValue(value)
设置gaugefield的值。
你这样做的意思是,事件线程将太多的屏幕推到堆栈上,我猜它会抛出一个运行时异常并杀死你的应用程序。