android在BroadcastReceiver的onReceive()中传递的上下文是什么

时间:2012-02-01 18:50:01

标签: android

当我实例化一个BroadcastReceiver并且当android框架调用onReceive()时,传递给onReceive()方法的上下文是什么? 这是一个活动背景吗?应用程序上下文?

谢谢。

3 个答案:

答案 0 :(得分:10)

它是一个应用程序上下文。

public abstract void onReceive (Context context, Intent intent)

答案 1 :(得分:4)

从历史上看,它是ReceiverRestrictedContext的一个实例,但是这个类在最近的Android版本中消失了(不知道究竟是哪个API级别,但它在API中不存在) 26个来源),现在,它应该是你的应用程序上下文。

ReceiverRestrictedContext阻止从BroadcastReceiver注册BroadcastReceiver

由于每次ReceiverRestrictedContext实例化时都会创建BroadcastReceiver的实例,因此您必须注意不要将其传递给生命周期比您的生命周期长的组件(非常短暂){{1或者你会在这些具有此BroadcastReceiver的旧版本(现在不是那么多)的Android版本上创建内存泄漏。

您可以安全地调用ReceiverRestrictedContext并将其结果传递给更长寿命的组件。

请注意,事实getApplicationContext()已从最近的Android版本中消失,并不意味着您可以制作" BroadcastReceiverCeption"!

答案 2 :(得分:0)

这是接收器运行的上下文。例如,如果广播消息来自UsbManager,则上下文是UsbManager的上下文 更多信息:BroadcastReceiver