点击主页按钮后立即调用Android onStop
Posted
技术标签:
【中文标题】点击主页按钮后立即调用Android onStop【英文标题】:Android onStop gets called right after tap home button 【发布时间】:2022-01-20 20:32:53 【问题描述】:我有一个关于 android 基本功能的快速问题。很明显,当屏幕部分可见时会调用 onPause。进一步的 onStop 据说仅在屏幕不再处于前景或背景时才被调用。
然而,奇怪的是,当我按下手机上的方形主页按钮时,每次在我的活动中都会调用 onStop。即使活动屏幕部分可见,我在后台显示 0.5 - 1 秒后仍会看到一条日志。这会导致在从简单暂停返回时调用 onRestart。因为我试图在这里展示广告,所以这有点问题。我在三星 Galaxy A51 和 Pixel 3 XL API 30 模拟器上进行了测试,结果相同。
目前我想知道为什么在此处调用此方法并想修正我的理解。如果是这样,我很可能会遗漏一些明显的东西并道歉(内存不足?)。以下是系统日志和活动生命周期图的屏幕截图。我在任何点击之前显示,在点击 1 次后显示日志窗口,然后在返回并点击第二次后显示日志窗口。
【问题讨论】:
【参考方案1】:这个暂停按钮是什么?如果你的意思是电源键或者home键,那么永远不应该有硬件键直接连接Activity的生命周期onPause
。
当您按下电源按钮或主页按钮时,它会进入锁定屏幕或Recents screen,在这两种情况下,您的应用肯定会停止(onPause
然后onStop
)而不是只是暂停(仅onPause
)。
似乎从onPause
直接转到onResume
可能是相当罕见的情况。
onPause()
在 Android 7.0(API 级别 24)或更高版本中,多个应用程序以多窗口模式运行。由于任何时候只有一个应用程序(窗口)具有焦点,因此系统会暂停所有其他应用程序。 一个新的半透明活动(例如对话框)打开。只要 Activity 仍然部分可见但不在焦点上,它就会保持暂停状态。关于后一种情况,你可以在 *** 上找到answer。
因此,如果您的应用程序没有被编码为直接导致 onPause
到 onResume
生命周期,那么您的应用程序应该在 onPause
之后立即进入 onStop
作为正常行为。
【讨论】:
我在这里指的是主页按钮。经过更多搜索后,我在 StackExchange 上找到了另一个答案,这也很有意义,并增加了低系统资源方面。因此,总而言之,我需要将 onPause -> onResume 显式编码到应用程序中,否则行为将取决于具体情况。 android.stackexchange.com/questions/15701/….以上是关于点击主页按钮后立即调用Android onStop的主要内容,如果未能解决你的问题,请参考以下文章