的項目我的工作,它使用黑莓SDK 6,報道了關閉一個MainScreen時,導致應用突然失去焦點,並停止響應的錯誤,該消息報道在控制檯輸出是foreground app ******* lost focus it has no screens
。讓我澄清,即使屏幕上的應用程序仍然可見,但顯示此消息顯示,但不知何故該應用程序失去了重點。黑莓應用程序失去焦點,並導致應用程序凍結
我一直沒能查明這是觸發這個bug的條件,我試圖採取許多地方都MainScreens打開的情況下,然後我通過點擊返回按鈕關閉它們。當我觸發這個錯誤時,我會嘗試更新更清晰的輸出。
在每一個MainScreen的onClose
方法重載,調用我們的屏幕管理類中的方法,一類我們創建來處理我們的MainScreens的開啓和關閉,它的代碼如下所示:
pubic void back()
{
if(pageStack.size() - 1 == 0) {
// if only one screen is in our stack collection, show a prompt asking if user wants to close app
int choose=Dialog.ask(Dialog.D_YES_NO, ui.getRb().getString(ui.EXIT_YES_NO));
if(choose==Dialog.YES)
{
System.exit(0);
}
} else {
// in case our stack of screens has more than one screen remaining then pop it for our stack
popPageStack();
}
}
popPageStack的代碼是這樣的:
private void popPageStack() {
pageStack.removeElementAt(pageStack.size()-1);
UiApplication.getUiApplication().popScreen(UiApplication.getUiApplication().getActiveScreen());
}
是否有可能在popScreen調用期間導致這種情況?我剛開始在黑莓開發,所以我不知道,如果其中popScreen調用製成,而一個POP操作前的畫面被渲染的情況下可以在應用程序情況下沒有屏幕是可能的?
編輯
我做了一個測試項目與菜單項,單擊時,刪除僅屏幕顯示,我所描述的行爲發生較早之後。事實上,我用某種方式耗盡了屏幕,顯示的最後一張仍然「顯示」,但由於已經彈出,所以不能進行交互。
我檢查我原來的項目,但我不明白我怎麼能觸發時,我剛剛搬回使用返回按鈕的的OnClose電話。無論如何,如果我要到達最後一個窗口,那麼會彈出一個對話框詢問應用程序是否應該關閉。
EDIT 2
我能夠重現錯誤的兩倍,儘管多次嘗試後。控制檯輸出我是這樣的:
[0.0] JVM:BKLT @ 12347710:SetTimer的30 [0.0] UIE:焦點 - 目標丟失, 先前= NULL,輸入= NULL,應用程式= com.yallaya。 [email protected] [0.0] UIE: 前景應用[email protected]失去焦點,因爲它具有 沒有屏幕。 [0.0] UIE:焦點 - 目標丟失,prev = null,input = null, [email protected] [0.0] UIE:Foreground app [email protected]失去焦點,因爲它沒有屏幕。 [0.0] UIE:前臺應用程序[email protected]沒有 屏幕。這應該被糾正。 [0.0] UIE:前景應用 [email protected]忽略觸摸屏觸摸/點擊,因爲 它沒有[0.0]目標屏幕。 [0.0] JVM:bklt @ 12377703:timer [0.0] JVM:bklt [1] @ 12377703:usrIdle 27,usrTime 30,usrAct 1 [0.0] JVM: bklt [1] @ 12377703:chkIdle 29,currTime 30 [ 0.0] JVM:bklt @ 12377703: setTimer 3 [0.0] JVM:bklt @ 12380734:timer [0.0] JVM:bklt [1] @ 12380734:usrIdle 30,usrTime 30,usrAct 1 [0。0] JVM:bklt [1] @ 12380734:chkIdle 33,currTime 30 [0.0] JVM:bklt [1] @ 12380734: enableBacklight 0 [0.0] JVM:bklt [1]:setTimeout 30 [0.0] JVM:bklt [1] @ 12386796:JBSC on = 0 [0.0] JVM:bklt [1] @ 12386796:SC 0 [0.0] JVM: bklt [1]:setTimeout 30 [0.0] JVM:bklt [1] @ 12388023: JBSC上= 1 [0.0] JVM:BKLT [1] @ 12388023:SC 1 [0.0] JVM:BKLT @ 12388023:SetTimer的30
每次我試圖與屏幕(或者觸摸或硬件交互作用輸入),[0.0] UIE: Foreground app [email protected] has no screens. This should be corrected.
行會顯示。
這是否暗示我的問題在哪裏?
類似的問題在BB論壇上被問到:http://supportforums.blackberry.com/t5/Java-Development/App-freezes-when-closing-a-MainScreen-loses-focus-and-says-it/td-p/ 2918548 –