2013-04-29 22 views
0

我有一個重寫onBackPressed()的活動,並且在此函數中,我明確地調用finish(),因爲我需要在應用程序退出前進行一些清理。finish()在使用android monkey工具時不工作

當我正常運行應用程序,然後點擊BACK鍵時,應用程序正常退出。

當我運行使用下面的命令猴子工具,

adb shell monkey -v --pct-syskeys 100 -p com.my.app 100 

根據日誌,則onBackPressed()函數被調用,但finish()不會關閉活動/應用程序。我一直在試圖弄清楚問題的存在,但目前還沒有。任何幫助表示讚賞。

編輯: 按評論,我張貼的onBackPressed()代碼:

@Override 
public void onBackPressed() { 
if (bIsBackKeyPressed) 
    return; 

    // do some clean up 

    bIsBackKeyPressed = true; 
    finish(); 
} 

我使用bIsBackKeyPressed標誌究其原因,是因爲猴子工具BACK鍵多次發送。

這可能與其他按鍵以及BACK鍵一起發生,但我不確定。

感謝,
Rajath

+0

你可以發佈你的'onBackPressed()'方法的正文。 – 2013-04-29 07:01:56

+0

@ AnujMathur_07,我發佈了代碼 – rajath 2013-04-29 07:08:44

+0

@rajath:你錯過了調用'super.onBackPressed();'。檢查一次,並讓我知道 – Praveen 2013-04-29 07:25:16

回答

1

我能找出問題所在。我的問題中應該提到一些額外的信息。這對猴子工具日誌:

// Allowing start of Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.my.app/.main.MainActivity } in package com.my.app 
// Rejecting start of Intent { act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10200000 cmp=com.htc.launcher/.Launcher } in package com.htc.launcher 

從猴子的文檔,如果我用下面的命令來運行猴

adb shell monkey -v --pct-syskeys 100 -p com.my.app -p com.htc.launcher 100 

那麼確定。請注意,我已經添加了以下內容:-p com.htc.launcher

那麼,什麼情況是,不給額外的參數,當BACK發送到應用程序,清理髮生在onBackPressed(),但finish()不叫的com.htc.launcher應用程序未被授予運行權限。

0

嘗試......

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK) 
    { 
     if (!bIsBackKeyPressed) 
     { 
      bIsBackKeyPressed = true; 
      finish(); 
     } 
     return true; 
    } 
    else 
    { 
     return super.onKeyDown(keyCode, event); 
    } 
+0

這是行不通的。這與onBackPressed() – rajath 2013-04-29 07:59:54

+0

相同@rajath - 我不知道,但如果條件應該是如果(!bIsBackKeyPressed)或內部如果循環它應該是bIsBackKeyPressed = false ..使用此標誌是爲了防止發射關鍵多次..am我對嗎? – TheFlash 2013-04-29 09:27:19

+0

這就是你需要修正的解決方案中的代碼 - 當我試用它時,我照顧到了這一點 – rajath 2013-04-29 09:27:26