使用android猴子工具时完成()不工作

时间:2013-04-29 07:00:12

标签: android android-activity android-monkey

我有一项覆盖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键一起发生,但我不确定。

谢谢,
Rajath

2 个答案:

答案 0 :(得分: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

从猴子文档中,如果我使用以下命令运行monkey

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应用程序未获得运行权限。

答案 1 :(得分: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);
    }