您的位置:首页 > 理论基础 > 计算机网络

Android应用开发之(管理好你的网络操作)

2013-08-11 02:04 302 查看
今天与大家分享一下如何在应用中更好使用网络。

如果在你的应用中执行了大量的网络操作,你应该提供给用户对网络连接控制设置入口,让用户可以对如:网络数据同步间隔,“上传”、“下载“操作时网络类型(如:只允许在Wifi下进行数据更新),手机漫游时是否禁止网络访问等等进行设置。通过这些用户更好掌控对网络使用,增强用户体验。

检查设备的网络连接情况

设备中可以进行多种类型的网络连接,今天重点给大家讲Wi-Fi和移动网络。

Wi-Fi:通常是高速的、免费的

移动网络:按量计算的,昂贵的。

应用中如果需要从网络中获取大数据,建议在Wi-Fi网络下进行。在进行网络操作前,检测当前网络连接的状态,这样既可以避免使用错误的网络连接,又可以在网络连接不可用时对用户进行提醒。

检测网络连接时,通常你会用到如下类:

ConectivityManager: 查询当前网络状态,网络改变时可以通知应用。

NetworkInfo: 描述当前网络的类型及状态(当前是Wi-Fi或移动网络)

下面这段代码判断检测Wi-Fi和移动网络状态,判别网络是否可用及连接状态:

注意:你不但要检测网络是否可用,还应通过isConnected()检测网络的连接状态;

一个简单有效的方式是像下面这种方式,通过getActivieNetworkInfo()返回的当前连接的网

络NetworkInfo对象来判断(Null表示网络连接无效):

从 NetworkInfo.DetailedState可以查找更多网络状态,但这通常是不需要的。

管理网络使用

你可以提供给用户管理网络使用的操作页面。如:

允许用户设置只在Wi-Fi网络下进行视频文件上传;

允许用户设置“同步网络数据”的时间间隔等等;

写一个支持网络访问和管理的应用时,你需要在mainifest.xml中添加以下permissions、

intent filters.

android.permission.INTERNET—运行应用打开网络.

android.permission.ACCESS_NETWORK_STATE—允许用户访问网络信息

你可以定义一个 ACTION_MANAGE_NETWORK_USAGE(Android4.0有介绍) action 的 intent filter来表明你的应用有一个activity可以提供网络访问控制。 通过带

ACTION_MANAGE_NETWORK_USAGE 的 intent filter 可以为指定的应用提供管理网络的设置页面。当你的应用中存在允许用户控制网络使用的activity时,你应该为这个activity定义这样的intent filter。

下面是个简单的例子:通过SettingsActivity可以允许用户设置下载操作的网络

实现设置Activity

如你所见,在上面的manifest中,SettingsActivity 设置了ACTION_MANAGE_NETWORK_USAGE

SettingsActivity 是 PreferenceActivity的子类,用户可以进行如下设置项:

是否显示概要内容还是连接入口

下载Feed内容是的网络类型





下面是SettingsActivity的代码,注意它实现了OnSharedPreferenceChangeListener接口,

这样当用户改变设置时,就会执行 onSharedPreferenceChanged()监听,通过设置

refreshDisplay 为 true,当用户回到main activity时会进行刷新操作:

处理属性变更

当用户在设置中操作时,通常会影响到应用的行为,在下面的片段中,在onStart()方法中检

查属性设置,如果网络连接和设置中相匹配,应用会加载数据和页面刷新:

探测网络连接的改变

在 BroadcastReceiver 的子类 NetworkReceiver中监听网络连接改变的广播

CONNECTIVITY_ACTION,设置网络连接标志 wifiConnected 和mobileConnected 的状态。确保再次回到加载页面中时,只能网络连接正常的情况下才进行数据更新。

BroadcastReceiver 广播存在时会消耗额外的系统资源,所以需要在onCreate()注册,在onDestroy()中撤销。如果你是通过在manifest中添加 <receiver>方式注册广播监听,它会在任何时间唤醒你的应用,即使你好久都没有使用它。通过在Activity中注册和撤销广播,确保你的应用在用户离开应用时不会被激活,当然通过 <receiver>这种方式注册广播监听,如果确切的知道何时需要开启,你可以通过setComponentEnabledSetting()对激活或者使广播失效。

源地址传送门:http://www.xmumu.com/post/2012-05-08/19550273

Android 网络
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: