在服务中获取上下文

新手上路,请多包涵

有没有可靠的方法从 Context 获得 Service

我想为 ACTION_PHONE_STATE_CHANGED 注册一个广播接收器,但我不需要我的应用程序始终获取此信息,所以我没有将它放在 Manifest 中。

但是,当我需要这些信息时,我不能让广播接收器被 GC 杀死,所以我在 Service 中注册广播接收器。

因此,我需要一个 Context 来调用 registerReceiver() 。当我不再需要 ACTION_PHONE_STATE_CHANGED 时,我 取消注册 它。

有小费吗?

原文由 user123321 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 740
2 个回答

以防万一有人得到 NullPointerException ,你需要得到里面的上下文 onCreate().

ServiceContext ,所以这样做:

 private Context context;

@Override
public void onCreate() {
    super.onCreate();
    context = this;
}

笔记:

阅读:“不要将 Android 上下文类放在静态字段中;这是内存泄漏(也会破坏 Instant Run)”你知道什么是上下文类吗? Activity 就是其中之一,您不应该将 Activity 存储为静态字段,(否则会泄漏内存)。但是,您可以将 Context(只要它是应用程序上下文)存储为静态字段,因为它比所有内容都更有效。

原文由 Ecclesiaste Panda 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题