gpt4 book ai didi

android - 在没有 Activity 或上下文的库中访问 ConnectivityManager

转载 作者:行者123 更新时间:2023-11-30 00:34:39 24 4
gpt4 key购买 nike

我正在构建一个具有某些功能的 android 库,它将被第 3 方应用程序使用。在我的库中,我需要访问与网络相关的内容,并且需要访问 Context.getSystemService() 以获取 ConnectivityManager。例如-

ConnectivityManager connectivityManager = ((ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE));

问题是我没有 Activity 类来获取上下文。所以 2 个问题 -

  1. 有没有办法获取调用我的库方法的 Activity 的上下文?
  2. 要求应用程序(调用我的库)将应用程序的 Activity 上下文向下传递到第 3 方库是否是一种好的做法?

谢谢!

最佳答案

理想情况下,您不应该通过上下文来检索资源。您应该传递资源本身(在本例中为 ConnectivityManager)。如果那不切实际(因为你需要多个资源,或者你需要不时地重新加载它们),或者资源本身与 Context 的生命周期相关联,而应用程序上下文是无用的,那么你应该传递上下文,但也应该可以在需要时删除引用,这样就可以避免泄漏和崩溃。例如,添加一个 setContext(Context context) 方法,并在离开 Activity 时将上下文设置为 null。不是很漂亮,但鉴于您无法控制用户的行为,这是最安全的选择。一个类似的选项是删除库对象引用,但这不会停止您的库可能对上下文执行的任何操作,直到 GC 的下一次扫描。请记住,即使您的库在主线程中运行,您的应用程序也可以随时发送到后台。

关于android - 在没有 Activity 或上下文的库中访问 ConnectivityManager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43624286/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com