android – 清单文件中声明的电池广播接收器不起作用?

有两种方法可以使系统知道广播接收器:一种方法使用此元素在清单文件中声明它.另一种是在java代码中动态创建接收器.

现在,接收器已经在java代码中动态创建,并且它确实正常工作.但是为什么第一种方式“在清单文件中声明”失败了?

有成功的人吗?

谢谢.

AndroidManifest.xml中

最佳答案
对于某些操作,您只能在Java代码中声明broadcastReceiver.据我所知,这发生在BATTERY_CHANGED操作和SCREEN_ON,SCREEN_OFF.

当您在Manifest.xml文件中声明broadcastReceiver时,无论您的应用程序是否正在运行,broadcastReceiver都将被唤醒,因此将调用onReceive方法.

为什么?我认为这是因为BATTERY_CHANGED动作非常常见,如果您可以在Manifest中声明它,系统通常会发送大量广播,从而大大消耗电池;但是,当您在代码中声明它时,broadcastReceiver仅在活动运行时才有效,从而避免极端的电池消耗.为节省电量,Android不允许在文件注册此类操作.

这只是我的猜测.我没有看到任何官方解释.作为开发人员,我只是记住这些行为,而不是背后的原因.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...