【问题标题】:Android - Avoiding an activity to destroy, just stopping or pausing it when pushing the back buttonAndroid - 避免破坏活动,按下后退按钮时只是停止或暂停它
【发布时间】:2010-03-19 13:08:15
【问题描述】:

我想在按下后退按钮时暂停应用程序或将应用程序置于后台,我不希望应用程序进入销毁状态。事情是当我覆盖 onKeyDown 并且当我通过使用 onPause 强制暂停或停止应用程序时,我遇到了唤醒锁和应用程序崩溃的一些问题,但是当我按下主页按钮时,我通过了 onPause 方法并且我没有例外,这很奇怪!!

【问题讨论】:

  • 只需使用onSaveInstanceState() 编写您的活动以正确保存其状态。没有活动可以永远存在,因为 Android 会破坏甚至暂停的活动以回收 RAM。
  • 我正在研究嵌入在汽车设备上的 GPS 应用程序。当发生事故时,我的服务会恢复应用程序以显示事故事件。如果用户单击后退按钮,应用程序将被销毁,当服务恢复时,需要一些时间来重新创建活动,然后出现事故事件。如果系统需要销毁应用程序,我相信用户不会因为游戏而烦恼,否则应用程序不能被销毁,这是一个安全问题!
  • “我正在研究嵌入在汽车设备上的 GPS 应用程序。”然后你就可以控制固件,并且可以做超出 SDK 的事情(坦率地说,超出了 StackOverflow 的一般帮助能力)。 “如果用户单击后退按钮,应用程序将被破坏,当服务恢复时,需要一些时间来重新创建活动,然后出现事故事件。”然后努力加快开放活动的执行。 “应用程序不能被破坏,这是一个安全问题!” Android 可能是您应用的错误操作系统选择。
  • Loool “Android 可能是您应用程序的错误操作系统选择”我的客户不这么认为!
  • 我只是在问如何将您的活动置于暂停状态,就像您单击主页按钮时 android 所做的那样。

标签: android


【解决方案1】:

尝试使用onBackPressed()方法,像这样:

@Override
public void onBackPressed() {
    moveTaskToBack(true);
}

【讨论】:

  • onBackPressed() 自 API 级别 5 起有效,因此如果您不支持早期设备,则此答案更好。
【解决方案2】:

答案是

public boolean onKeyDown(int keyCode, KeyEvent event)
{

    if (keyCode == KeyEvent.KEYCODE_BACK)
    {
        moveTaskToBack(true);
        return true; // return
    }

    return false;
}

【讨论】:

  • 其他情况,用户点击后端Activity怎么办,好像不调用onKeyDown。
  • 好的,我喜欢 Windows 之外的触控解决方案。stackoverflow.com/a/5831214/2193455
【解决方案3】:
@Override
public void onBackPressed() {
    if(mWebView.canGoBack())
        mWebView.goBack();
    else
        //super.onBackPressed();
        moveTaskToBack(true);

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-22
    • 1970-01-01
    • 2014-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多