Android:如何通过通知下拉菜单检测设置何时更改?

Posted

技术标签:

【中文标题】Android:如何通过通知下拉菜单检测设置何时更改?【英文标题】:Android: How to detect when settings were changed via Notification Pull Down Menu? 【发布时间】:2015-03-09 07:09:42 【问题描述】:

在我的应用程序中,我需要 NFC(不过,任何需要 GPS 的人也会遇到这种情况)。在我的 MainActivity 中,我检查以确保在我的 onResume 方法中启用了 NFC。

当有人拉下通知栏时,他们可以选择更改最顶部的许多设置,包括 GPS 和 NFC。当通知菜单被下拉时,我很惊讶地发现应用程序没有调用onPause。通过通知菜单禁用 NFC,用户绕过了我的应用程序的一层(至少是暂时的)。

有什么办法可以缓解这种情况吗?我想我可以每隔几秒连续检查一次 NFC 是否开启,但我认为这太过分了。

一个非常粗略的方法是以某种方式勾勒出屏幕在您下拉时变暗并在您向上推通知菜单时变亮的事实......不过这可能只是我的手机。这个比较麻烦。

【问题讨论】:

【参考方案1】:

有广播接收状态变化:

全球定位系统:How to detect when user turn on/off gps state? NFC:android - Listening to NFC Adapter State Changed

注册/注销以在您的 onResume/onPause 期间收听它们

【讨论】:

你说在 onResume 和 onPause 期间注册和注销监听。我选择在 onCreate 中注册并在 onDestroy 中取消注册,同时保留我目前拥有的 onResume/onPause 检查。你有什么理由建议 onResume/onPause 而不是 onCreate/onDestroy? 我的荣幸。 Android 充满了各种信息的广播,超级有用的东西。 编辑了我的评论,因为我有一个问题。 回答额外问题:创建/销毁活动可以在后台。所以我通常只在活动在屏幕上时才做这些事情。 onResume,读取最新值,更新任何View 并注册更新。 onPause,取消注册以获取更新。一些人也建议 onStart/onStop (不会因为 Dialogs 出现而被调用)。但 create/destroy 通常用于视图创建和配置、适配器设置。视图构建多于数据处理。 啊,我明白了。我想我会选择 onStart 和 onStop。似乎适合我。再次感谢:)

以上是关于Android:如何通过通知下拉菜单检测设置何时更改?的主要内容,如果未能解决你的问题,请参考以下文章

如何修改android下拉通知栏的高度???

如何检测 VideoView 何时开始播放(Android)?

通过单击通知下拉菜单中的选项卡打开(警报)对话框

Android之Button 和下拉菜单的结合

Android 10.0 原生SystemUI下拉通知栏UI背景设置为圆角背景的定制

Android 6.0通知栏下拉动画缓慢的问题