如何捕获由单击android活动的右上角X引起的事件

Posted

技术标签:

【中文标题】如何捕获由单击android活动的右上角X引起的事件【英文标题】:How to catch the event caused by clicking on the top-right X of an android activity 【发布时间】:2016-11-04 20:32:33 【问题描述】:

我想知道点击 Activity 右上角的 X 时 android 会出现什么事件。我试过onStop()onDestroy(),但他们根本没有被调用。

请注意,我使用 AppTheme.NoActionBar 作为应用主题,并且我的 Activity 扩展了 AppCompatActivity。

另外,是否可以删除右上角的 X 按钮(但保留下拉菜单)?

【问题讨论】:

【参考方案1】:

查看该图像,您处于设备的“最近使用”(或其他名称)部分。如果您在该屏幕上,则已为您的活动调用 onStop(),当您单击 X(关闭应用程序)按钮时,将调用 onDestroy()。

覆盖那些生命周期方法,onPause onStop 等,并在其中放置 Log 语句。像这样: Log.d("lifecycle","onStopCalled");并检查你的 logcat 发生了什么

【讨论】:

感谢您的回复。我实际上覆盖了 onPause()、onStop() 和 onDestroy(),并通过在每个方法上设置断点来跟踪代码。根据我的观察,当我单击最近的应用程序按钮(底部的方形按钮)时,首先调用 onPause(),然后调用 onStop(),但是当我单击 X 按钮时,它们都没有被调用。这很奇怪。我在这里有什么遗漏吗? 没错。当您单击最近的应用程序按钮(或使您的应用程序在屏幕上消失的任何按钮)时,首先调用 onPause,然后调用 onStop()。此时,您的应用程序仍处于活动状态,但您的应用程序不可见,处于停止状态。在此之后,您有两个选择:1. 让您的应用再次在屏幕上可见或 2. 完全关闭您的应用。如果您选择选项 2 , onDestroy();将被调用。如果您选择 1 ,这些方法将被调用: onRestart(); , onResume(); 在谷歌图片上搜索“活动生命周期”并检查这些方案。这将帮助您更好地理解 =D 我希望你能理解我(英语不是很好)。当您单击 X 按钮时, onPause() 和 onStop() 没有调用,因为它们在您导航到最近的应用程序屏幕时已经被调用。它现在正在等待 onDestroy 或 onRestart 点击最近的应用按钮(方形按钮)只会缩小activity的窗口大小,这样你就可以从你正在运行的应用中选择一个正在运行的应用。它不会使任何应用程序消失。在那个阶段(如我之前发布的图片所示),我的应用程序仍然可见,单击 X 按钮将完全关闭我的应用程序,但问题是 onDestroy() 方法没有被调用。

以上是关于如何捕获由单击android活动的右上角X引起的事件的主要内容,如果未能解决你的问题,请参考以下文章

如何在Android中单击图标时打开侧栏?

如何捕获由格式错误的 layout-xml 文件引起的异常?

如何区分两个“onpause”事件 - 由单击“暂停”按钮引起,以及由到达媒体片段末尾引起?

android学习-1

Android Facebook 登录 - 由 null 引起的错误

使用手机摄像头,在捕获图像活动后不会返回特定活动