【问题标题】:Is ConnectivityManager.getActiveNetworkInfo() expensive to call often?ConnectivityManager.getActiveNetworkInfo() 是否经常调用昂贵?
【发布时间】:2013-04-05 00:28:56
【问题描述】:

我正在尝试为我的应用程序制定策略,我需要在其中执行不同的网络操作。我的问题是,调用ConnectivityManager.getActiveNetworkInfo() 是否被认为是一个长时间运行且耗电的操作,是否可以经常调用它,或者我应该通过应用其他策略来优化我的应用程序的性能?提前致谢。

【问题讨论】:

  • 嘿,如果是昂贵的电话,你得到答案了吗?如果是的话,w.r.t. 有多贵?使用广播接收器缓存结果?

标签: android optimization android-networking


【解决方案1】:

到目前为止,我已经在三个应用程序中使用了 ConnectivityManager.getActiveNetworkInfo()。您可以使用 checkNetwork() 方法并调用它,以确保每次用户启动需要网络的东西时您都处于正确的状态,以便他或她可以纠正这种情况。除此之外,您的错误处理可能会将 sleep() 调用与网络检查和连接管理结合起来。这意味着使用大约 30 亿的权限。但这将是一种合理的方式。

【讨论】:

  • 感谢您的回答。实际上,我考虑过使用 BroadcastReceiver 来实现这一点,以捕获与连接相关的广播消息并将状态存储在变量中,然后在需要时检查它。这有点复杂,因为我的应用程序包含几个活动,我需要知道何时注册和取消注册 BroadcastReceiver。这就是为什么我想知道我所描述的方法是否可以根据需要经常调用。
  • 你的想法可能比我的好。如果您的网络需求是用户触发的,例如当他单击按钮时上传文件,我的没问题。如果你的使用量更大,我认为你有更好的主意。
猜你喜欢
  • 1970-01-01
  • 2012-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多