首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

单击设备后退按钮将关闭应用程序,而不是返回android 9中的上一页

基础概念

在Android 9及之前的版本中,默认情况下,单击设备的后退按钮会关闭应用程序,而不是返回到上一个页面。这是因为在这些版本中,应用程序的默认行为是将后退按钮映射到finish()方法,这会导致当前Activity被销毁。

相关优势

  • 用户体验:在某些情况下,关闭应用程序可能更符合用户的预期,尤其是在单页应用或模态对话框中。
  • 资源管理:关闭应用程序可以释放内存和其他系统资源。

类型

  • 单页应用(SPA):在这种应用中,所有内容都在一个页面上动态加载,后退按钮通常用于退出应用。
  • 模态对话框:在这种场景中,后退按钮通常用于关闭对话框并返回到主界面。

应用场景

  • 单页应用:如新闻阅读器、社交媒体应用等。
  • 模态对话框:如设置对话框、登录对话框等。

问题原因

在Android 9及之前的版本中,默认情况下,单击后退按钮会调用finish()方法,导致当前Activity被销毁。

解决方法

要改变这种行为,可以在Activity中重写onBackPressed()方法,使其返回到上一个页面而不是关闭应用程序。以下是一个示例代码:

代码语言:txt
复制
@Override
public void onBackPressed() {
    // 调用父类的onBackPressed()方法返回到上一个页面
    super.onBackPressed();
}

参考链接

进一步优化

如果你希望在某些特定情况下关闭应用程序,可以在onBackPressed()方法中添加条件判断:

代码语言:txt
复制
@Override
public void onBackPressed() {
    if (shouldCloseApp()) {
        finishAffinity();
    } else {
        super.onBackPressed();
    }
}

private boolean shouldCloseApp() {
    // 添加你的逻辑判断是否关闭应用程序
    return false;
}

通过这种方式,你可以灵活地控制后退按钮的行为,以满足不同的应用需求。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

AngularDart 4.0 高级-路由概述 顶

它可以将浏览器URL解释为导航到客户端生成视图的指令。它可以将可选参数传递给支持视图组件,以帮助确定要呈现的具体内容。您可以将路由器绑定到页面上的链接,并在用户单击链接时导航到适当的应用程序视图。...一路上,它突出了设计决策并描述了路由的关键特性。 本指南将按照一系列里程碑进行,就像您在逐步构建应用程序一样。...一旦应用程序启动完成,您将看到一排导航按钮和带有英雄列表的英雄视图。 ? 选择一个英雄,该应用会将您带到英雄编辑屏幕。 ? 改名字。 点击“返回”按钮,应用程序返回英雄列表,显示更改的英雄名称。...如果您点击了浏览器的后退按钮而不是“返回”按钮,该应用程序也会将您返回到英雄列表。 Angular的应用程序像正常的网页导航一样更新浏览器的历史。 现在点击危机中心链接查看正在进行的危机列表。 ?...点击浏览器后退按钮或“英雄”链接。 向上弹出一个对话框。 ? 您可以选择“OK”并丢失您的更改,或单击“Cancel”并继续编辑。 这种行为的后面是路由的routerCanDeactivate挂钩。

6.1K20

最全的windows操作系统快捷键

+DELETE      删除被选择的选择项目,如果是文件,将被直接删除而不是放入回收站 CTRL+N         新建一个新的文件 CTRL+O         打开“打开文件”对话框 CTRL+...ALT+PRINT SCREEN    将当前活动程序窗口以图象方式拷贝到剪贴板 CTRL+F4         关闭当前应用程序中的当前文本(如word中) CTRL+F6         切换到当前应用程序中的下一个文本...(加shift 可以跳到前一个窗口) 在IE中: ALT+RIGHT ARROW     显示前一页(前进键) ALT+LEFT ARROW     显示后一页(后退键) CTRL+TAB        ...”和“Windows资源管理器”的快捷键 目的快捷键 关闭所选文件夹及其所有父 文件夹按住 SHIFT键再单击“关闭按钮(仅适用于“我的电脑”) 向后移动到上一个视图 ALT+左箭头 向前移动到上一个视图...,要单击该选项空格键 单击相应的命令 ALT+带下划线的字母 单击所选按钮 ENTER 在选项上向后移动 SHIFT+ TAB 在选项卡上向后移动 CTRL+ SHIFT+ TAB 在选项上向前移动 TAB

2K20
  • JavaScript(九)

    它们的外观由操作系统及(或)浏览器设置决定,而不是由 CSS 决定。此外,通过这几个方法打开的对话框都是同步和模态的。...为了确定用户是单击了 OK 还是 Cancel,可以检查 confirm() 方法返回的布尔值: true 表示单击了 OK,false 表示单击了 Cancel 或单击了右上角的 X 按钮 prompt...如果用户单击了 OK 按钮,则 prompt() 返回文本输入域的值,如果用户单击了 Cancel 或没有单击 OK 而是通过其他方式关闭了对话框,则该方法返回 null 这些系统对话框很适合向用户显示消息并请用户作出决定...当通过上述任何一种方式修改 URL 之后,浏览器的历史记录中就会生成一条新记录,因此用户通过单击”后退”按钮都会导航到前一个页面。 要禁用这种行为,可以使用 replace() 方法。...负数表示向后跳转(类似于单击浏览器的”后退”按钮),正数表示向前跳转(类似于单击浏览器的”前进”按钮)。

    1.1K40

    一篇文章带你了解JavaScript Window History

    返回上一页 该history.back()方法将历史记录列表中的上一个URL加载。 这与在浏览器中单击“后退按钮”相同。 后退”按钮将不会执行任何操作,因为历史记录列表中没有先前的URL 上面的代码将显示以下输出。...前进到下一页 该history.forward()方法将在历史记录列表中加载下一个URL。 这与在浏览器中单击“转发按钮”相同。 按钮将不会执行任何操作,因为历史记录列表中没有下一个URL: 上面的代码将显示以下输出(如果历史记录列表中不存在下一页,则此示例将不起作用): ?...四、总结 本文基于JavaScript基础,介绍了如何通过window.history访问 JavaScript浏览器对象,如何获取对应网页的页数 访问网页的上一页,下一页,访问特定的页面,都做了详细的讲解

    1.5K10

    『React Navigation 3x系列教程』之createStackNavigator开发指南

    屏幕转场风格 默认情况下,createStackNavigator提供了转场过渡效果,在Android和iOS上过渡效果是不同的,这也是React Native重平台性的一个体现,在Android上从屏幕底部淡入...headerBackTitleVisible : 提供合理的默认值以确定后退按钮标题是否可见,但如果要覆盖它,则可以使用true或` false 在此选项中。...fade-in-place: 标题组件交叉淡入淡出而不移动,类似于iOS的Twitter,Instagram和Facebook应用程序。 这是默认值。 uikit: iOS的默认行为的近似值。...默认为带有 react-navigation/views/assets/back-icon.png 这张图片的组件,后者是平台的默认后图标图像(iOS上为向左的符号,Android上为箭头)。...当用户单击Go Back按钮时,通过: navigation.goBack(); 实现了返回上一页; 类似上述的应用场景有很多,大家可以通过与本教程配套的最新版React Native+Redux打造高质量上线

    5K10

    如何使用纯前端控件集 WijmoJS 中的可视化在线设计器

    如果要保存设计器布局以供将来使用,请使用主工具栏上的“保存”按钮将当前状态写入JSON文件,然后使用主工具栏上的“打开”按钮重新加载所选文件的内容。...单击“属性”窗格中的“后退”按钮以返回FlexChart的设置。 接下来,单击图例属性的齿轮图标,并将其位置设置更改为“底部”。 像以前一样单击后退按钮返回FlexChart设置。...在“属性”窗格中向下滚动,找到系列属性,然后单击“显示项目”按钮将其展开。 将鼠标悬停在最新价格上,然后单击出现的链接。...单击后退按钮返回FlexChart设置,然后像以前一样展开系列属性。 现在单击“添加项目”链接以将新图表系列添加到集合的末尾。...趋势行(最后添加)使用专门的TrendLine构造函数而不是默认的Series构造函数。

    5.9K20

    你的屏幕被“偷”了,新恶意软件Vultur已控制数千台设备

    该恶意软件会在目标应用程序打开时记录屏幕,Vultur 会使用 VNC 屏幕共享将失陷主机的屏幕镜像到攻击者控制的服务器。...每当用户尝试访问 Android 设置中的应用程序详细信息页时,Vultur都会自动单击后退按钮。这会妨碍用户点击卸载按钮,而且Vultur也隐藏了它自己的图标。...为了提供对在受感染设备上运行的 VNC 服务器的远程访问,Vultur使用 ngrok,该应用程序会使用加密隧道将隐藏在防火墙后面的本地系统暴露给公共互联网。...共计影响了超过 5000台设备,与其他依赖第三方Dropper的Android恶意软件不同,Vultur使用被称为Brunhilda的自定义Dropper。...Brunhilda与Vultur是由同一个组织开发的,而Brunhilda过去曾被用来安装不同的Android银行恶意软件。据估计,Brunhilda一共感染了超过3万台设备。

    62440

    为安卓Chrome加入自定义手势控制

    也有其独特的手势特性(比如左/右划地址栏切换标签,下划菜单键弹出并选择菜单项等),但是深得"我国用户"喜爱的左/右划控制页面后退/前进的手势功能在却迟迟没有在Chrome上得到体现。...移除完成后,点击右下角的"+"按钮进入手势添加界面,比如我们要添加一个从屏幕左边缘右划返回上一页面的手势,可以如下设置:   手势选择:右划   触点个数:1   起始区域:左侧边缘   操作:无   ...单个应用操作:Chrome - 操作 - 浏览 - 返回   高级选项:将"离开屏幕后识别"打勾 ?   ...同样,GMD手势预置16种"浏览"动作,包括:"后退/前进/刷新/新建标签/新建隐身标签/关闭标签/上一标签/下一标签/打开书签/添加为书签/页面内查找/打开历史记录/滚动至页面顶部/滚动至页面底部/滚动到上一页.../滚动到下一页",基本上是能满足日常浏览要求了~   最后,进入Chrome体验手势操作之旅吧~ 应用下载:   Play商店(Lite版): https://play.google.com

    3.8K30

    JavaScript 高级程序设计(第 4 版)- BOM

    (如果不是,会调用传入值的toString进行转换),对话框只有一个“OK”(确定)按钮 confirm: 确认框有两个按钮:“Cancel”(取消)和“OK”(确定),用户通过单击不同的按钮表明希望接下来执行什么操作...如果用户单击了 Cancel 按钮,或者对话框被关闭,则 prompt()会返回 null find()和print(): 这两种对话框都是异步显示的,即控制权会立即返回给脚本 显示查找对话框或打印对话框...,可以借助这个方法将 Web 应用程序注册为像桌面软件一样的默认应用程序。...此时单击“后退”按钮,就会触发 window 对象上的 popstate 事件 popstate 事件的事件对象有一个 state 属性,其中包含通过 pushState()第一个参数传入的 state...否则,单击“刷新”按钮会导致 404 错误。所有单页应用程序( SPA, Single Page Application)框架都必须通过服务器或客户端的某些配置解决这个问题。

    1.2K10

    Mac 常用快捷键与操作

    窗口管理 快捷键效果Command + W关闭当前窗口Command + Option + W关闭当前应用程序的所有窗口,注意只针对当前应用程序。...如关闭多个 Finder 窗口Command + M最小化当前窗口Command + Option + M最小化当前应用程序的所有窗口,注意只针对当前应用程序。...快捷键效果Fn + 上箭头Page Up:向上滚动一页Fn + 下箭头Page Down:向下滚动一页Fn + 左箭头Home:滚动到文稿开头Fn + 右箭头End:滚动到文稿末尾 其他 快捷键效果 3....手势 单指: 轻触滑动:相当于鼠标移动 按压一次:相当于鼠标单击 按压两次:相当于鼠标双击 按压不放滑动:可实现拖动 中间停顿按压两次:重命名 双指: 双指上下滑动:上下滚动页面动 双指左右滑动:前进后退...选择其中任意一个屏幕角设置为“桌面”,那么将鼠标移动至对应的屏幕角用,就会触发刚才的设置,执行“回到桌面”的操作。

    3.8K20

    JSP 防止网页刷新重复提交数据

    注意,这种方法清除的是最后一个访问历史记录,而不是全部的访问记录。 点击后退按钮,再点击后退按钮,你可以看到这时打开的是本页面之前的页面!...但有时候我们不得不关闭这个功能,以防止用户打乱预定的页面访问次序。本文介绍网络上可找到的各种禁用浏览器后退按钮方案,分析它们各自的优缺点和适用场合。    ...一、概述      曾经有许多人问起,“怎样才能‘禁用’浏览器的后退按钮?”,或者“怎样才能防止用户点击后退按钮返回以前浏览过的页面?”在ASP论坛上,这个问题也是问得最多的问题之一。...后来,看到竟然有那么多的人想要禁用这个后退按钮,我也就释然(想要禁用的只有后退按钮,不包括浏览器的前进按钮)。因为在默认情况下,用户提交表单之后可以通过后退按钮返回表单页面(而不是使用“编辑”按钮!)...另外一种禁用后退按钮的办法是用客户端JavaScript打开一个没有工具条的窗口,这使得用户很难返回前一页面,但不是不可能。

    11.6K20

    如何在Ubuntu 16.04上的Jenkins中设置持续集成管道

    access tokens: [GitHub personal access tokens link] 单击下一页上的Generate new token按钮: [GitHub Generate new...如果您使用的是私人存储库,你需要选择一般的repo权限,而不是repo子项: [Select scopes] 完成后,单击底部的生成令牌。...使用您在安装期间配置的管理帐户登录Jenkins Web界面。 在主界面中,单击左侧菜单中的凭据: [凭据] 在下一页上,单击Jenkins范围内(全局)旁边的箭头。...在此处,您可以单击左侧菜单中的“控制台输出”按钮以查看已运行步骤的详细信息: 完成后单击左侧菜单中的“ 返回项目”以返回主管道视图。...为了验证这一点,在我们的GitHub上的存储库页面中,您可以单击克隆或下载按钮左侧的创建新文件按钮: [创建新文件] 在下一页上,选择文件名和一些虚拟内容: [添加内容] 完成后,单击底部的“ 提交新文件

    6K30

    Windows10系统变慢,用上这19招,电脑性能大幅度提升!

    ,但是,如果不是每天都使用这些应用程序,或者电脑配置不高,这会浪费宝贵的系统资源,显著降低电脑运行的速度。...在“隐私”部分下,关闭“更新或重启后,使用我的登录信息自动完成设备设置并重新打开我的应用”选项后重新打开我的应用程序。...选择要删除的应用。 单击“卸载”按钮。 如果要删除Microsoft Store应用程序,请再次单击“卸载”按钮进行确认。如果要删除传统的桌面应用程序,需要继续按照屏幕上的说明完成卸载。...单击“下一步”按钮。 单击“关闭”按钮。 更新应用 过时的应用程序也可能导致设备运行速度变慢,虽然从微软应用商店安装的软件会自动更新,但许多传统桌面应用程序则需要手动更新。...单击“扫描受影响的程序”按钮,查看在创建还原点后安装的应用程序。 单击“关闭”按钮。 单击“下一步”按钮。 单击“完成”按钮。

    15.9K30

    游戏优化系列一:海外谷歌应用适配相关

    ="true" android:smallScreens="true" /> 6.返回按钮 返回按钮需具有返回功能,应具有返回上一级内容、取消当前处理中的事务、退出游戏等作用。...返回键功能的官方解释: 1.具有与屏幕上任何后退或关闭按钮相同的功能 2.暂停和取消暂停游戏(如果适用) 3.关闭所有对话框窗口 4.导航到菜单堆栈中的上一个位置(如果适用) 5.第一次登录时,在主菜单中按下退出应用程序...,在服务器选择和字符选择页面中,Android后退按钮出现错误行为。...具体情境: (1)在游戏启动、资源加载过程,点击系统返回按钮要求能够后退,或者弹框提示用户是否退出游戏;(部分应用在这过程屏蔽了系统按钮,出现被谷歌应用商店拒绝的情况) (2)活动弹窗显示时,点击返回系统按钮要求能够关闭弹窗...示例说明:点击返回按钮无法关闭弹窗 ​ ​

    10.7K40

    Material Design — 提示框( Dialogs)

    关闭提示框 提示框可以通过点击提示框外部或点击系统后退按钮(在Android上)来关闭。 有时候,用户必须做出选择动作后才能关闭提示框。...点击确认对话框中的“取消”,或按Android的“后退”,取消操作,放弃所有更改并关闭对话框。 ?...左:选择日期    右:选择时间 取消与确定按钮 确认提示框需要提供明确的确认按钮和明确的取消按钮。 点击取消按钮、返回按钮或离开确认提示框将放弃之前的更改。 ?...要提供明确的“取消”与“确定”按钮 ---- 全屏提示框(Full-screen Dialogs) 仅限手机:由于空间有限,全屏幕对话框可能更适合使用在手机,而不是屏幕较大的设备上。...确认按钮将被禁用,直到满足对话框中的所有必填字段都完成时,确认操作才会被激活 丢弃(离开) 丢弃操作(屏幕左上角的“X”)和后退按钮均会关闭全屏对话框并放弃之前所做的更改。

    5.2K101

    Android Studio 教程:创建 Android 应用

    将您的应用程序命名为“MyFirstProject”,然后单击下一步。 将活动添加到 Android 应用程序 在这一步中,我们将向我们的应用程序添加一个空活动。...为此,请单击下图所示屏幕上的“下一步”按钮。 现在,从选项中选择 Empty Activity 模板,然后单击 Next 按钮。 单击完成按钮。...请记住,这里我们正在创建我们的第一个项目,因此我们将创建一个显示消息“Hello World”和“单击我”按钮的屏幕。 在正文中,tab复制以下代码。...虽然我们已经安装了 Genymotion 模拟器,但在真实设备上运行应用程序仍然很快。因此,将您的 android 设备连接到您的电脑,然后单击工具栏上的运行选项。 您将找到以下对话框。...选择您已连接的设备,然后单击“确定”按钮。 现在,让 Gradle 构建完成。之后,您会看到您的第一个应用程序在您的 Android 设备上启动。 以下是启动应用程序的屏幕截图。

    2.3K20

    Strandhogg漏洞:Android系统上的维京海盗

    维京海盗StrandHogg的独特之处 1、无需root上演复杂攻击:StrandHogg漏洞之所以独特,主要是因为它最大限度地利用了Android多任务系统弱点,无需root既可允许恶意程序伪装成设备上的任意程序...普通用户只能通过一些不鲜明的异常发现问题,比如已登录的应用要求登录、单击用户界面按钮链接时不起作用,或者后退按钮无法正常工作。 3、扩大UI欺骗风险:UI欺骗,很多人听说过。...而StrandHogg漏洞的出现,多个程序同时遭劫持等情况,若不加以有效控制,一旦大范围扩散,都将进一步扩大UI欺骗风险。 并不是所有被发现的漏洞,都会被利用,但攻击者绝不会放过那些有价值的漏洞。...,已经安装在了一些用户的设备上。...它会让Android操作系统重新评估所有任务和活动,并在启动相关任务前,先查找标记有此属性的活动并将其移动。 这样,恶意程序就会根据新一次启动程序的情况,及时更新屏幕上显示的内容。 ?

    1.2K10
    领券