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内容是的网络类型
![](http://m1.img.libdd.com/farm3/84/49DA6B126F0C83C34A14175C8815A554_220_367.PNG)
![](http://m3.img.libdd.com/farm3/75/85DF4411378284DB7A3DE737BF4C924B_220_367.PNG)
下面是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 网络
如果在你的应用中执行了大量的网络操作,你应该提供给用户对网络连接控制设置入口,让用户可以对如:网络数据同步间隔,“上传”、“下载“操作时网络类型(如:只允许在Wifi下进行数据更新),手机漫游时是否禁止网络访问等等进行设置。通过这些用户更好掌控对网络使用,增强用户体验。
检查设备的网络连接情况
设备中可以进行多种类型的网络连接,今天重点给大家讲Wi-Fi和移动网络。
Wi-Fi:通常是高速的、免费的
移动网络:按量计算的,昂贵的。
应用中如果需要从网络中获取大数据,建议在Wi-Fi网络下进行。在进行网络操作前,检测当前网络连接的状态,这样既可以避免使用错误的网络连接,又可以在网络连接不可用时对用户进行提醒。
检测网络连接时,通常你会用到如下类:
ConectivityManager: 查询当前网络状态,网络改变时可以通知应用。
NetworkInfo: 描述当前网络的类型及状态(当前是Wi-Fi或移动网络)
下面这段代码判断检测Wi-Fi和移动网络状态,判别网络是否可用及连接状态:
一个简单有效的方式是像下面这种方式,通过getActivieNetworkInfo()返回的当前连接的网
络NetworkInfo对象来判断(Null表示网络连接无效):
管理网络使用
你可以提供给用户管理网络使用的操作页面。如:
允许用户设置只在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可以允许用户设置下载操作的网络
如你所见,在上面的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()对激活或者使广播失效。
Android 网络
相关文章推荐
- Android官方开发文档Training系列课程中文版:网络操作之网络管理
- Android应用开发:网络工具——Volley(一)
- Android应用开发-网络编程①
- C#开发微信门户及应用(6)--微信门户菜单的管理操作
- Android开发:性能最佳实践-管理应用内存
- Android应用开发:网络工具——Volley(一)
- Android开发16——获取网络资源之基础应用
- 【Android应用开发技术:网络通信】计算机网络基础
- android应用开发 网络编程与常见功能优化总结
- Android 应用开发支持不同的语言国际化操作
- [Android应用开发] 03.网络编程
- Android网络开发详解具体应用代码
- Android应用开发—FragmentManager如何管理fragments
- Android应用开发:网络工具——Volley(二)
- 【Android 应用开发】 自定义组件 宽高适配方法, 手势监听器操作组件, 回调接口维护策略, 绘制方法分析 -- 基于 WheelView 组件分析自定义组件
- 【Android应用开发技术:网络通信】网络服务可发现基本原理
- android开发-WIFI网络基本操作
- ios有文件管理系统吗?自己开发的应用能不能像Android一样读取本地文件列表?
- Android开发之应用程序窗体显示状态操作(requestWindowFeature()的应用)
- WiFi 网络操作(一)-- MarsChen Android 开发教程学习笔记