0

をオーバーライドするアクティビティがあり、アプリを終了する前にクリーンアップを行う必要があるため、onBackPressed()この関数内で明示的に を呼び出します。finish()

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についてはわかりません.

ありがとう、
ラジャス

4

2 に答える 2

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);
    }
于 2013-04-29T07:20:08.670 に答える