2012-02-08 19 views
1

我正在使用彈出屏幕來顯示後臺上傳過程的更新狀態。我想取消兩者之間的上傳。我試圖通過在彈出式屏幕上添加按鈕或使用設備的物理後臺按鈕來實現此目的。但似乎沒有任何生成的事件被應用程序捕獲。PopUpScreen Blackberry中的屏蔽事件

這裏是我正在創建一個彈出式屏幕,顯示它T的用戶

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偵聽器方法內添加斷點來檢查此問題。

我該如何在黑莓手機上做到這一點?

回答

2

對invokeLater(int代碼的第二位)的調用導致Runnable在事件線程上執行。如果你在事件線程塊上做了任何事情,那麼界面將不會像你所描述的那樣響應。任何可能阻塞的調用都不得在事件線程上運行。

+0

感謝您的回答。我怎樣才能正確地做到這一點? – Zach 2012-02-08 18:06:27

+0

您的程序中似乎已經有一個線程,所以我假設您熟悉Java和BlackBerry上的線程。您只需將任何阻塞函數移動到不是事件線程的線程上。你如何做到這一點,並與你的程序邏輯接口取決於你的程序。 – Richard 2012-02-08 22:14:01