2013-11-26 85 views
0

我的应用程序使用HttpURLConnection从网络下载数据,因此它要求获得INTERNET权限。在执行网络操作之前​​,我应该检查网络状态吗?

是否也应该检查设备连接到网络(通过ConnectivityManagerNetworkInfo)从而增加ACCESS_NETWORK_STATE所请求的权限,或者我应该简单地尝试下载数据和处理异常?

Google的Connecting to the NetworkManaging Network Usage指南建议开发人员在尝试执行网络操作以检查“更好的用户体验”之前检查网络状态,但我记得阅读教程(目前我无法找到)告诉只要求真正不可避免的权限,不要吓跑用户,更好地“自我控制”。

所以,

  • 是否有某种关于此最佳实践的?
  • 是否有任何问题没有问权限和处理异常?
+0

我的意见是,如果你想*做*什么时候它改变,或者如果你想*改变*取决于国家的东西,你应该只添加额外的权限。例如,如果要在网络不存在时禁用某项功能(而不是在尝试通知时)。否则,就像你说的那样,这只是一个额外的许可来“吓唬”人们。只是我的意见,但我相信其他人可能会有所不同。 – Geobits

回答

1

即使您在调用远程服务之前检查网络可用性,仍然需要在对话过程中处理连接失败的情况。需要几秒钟的时间才能下载几百kB的数据,并且您可以随时断开连接(用户甚至可以通过进入飞行模式来打断您)。

只是让它对用户很好。以非侵入性的方式显示错误。