Android学习系列(7)--App轮询服务器消息
2014-12-25 17:19
141 查看
这篇文章是android开发人员的必备知识。
1.轮询服务器
一般的应用,定时通知消息可以采用轮询的方法从服务器拿取消息,当然实时消息通知的话,建议采用推送服务。
其中需要注意轮询的频率设置,要在需求和性能中平衡。
2.独立进程
无论程序是否正在运行,我们都要能通知到客户,我们需要一个独立进程的后台服务。
我们需要一个独立进程的后台服务。
在AndroidManifest.xml中注册Service时,有一个android:process属性,如果这个属性以"."开头,则为此服务开启一个全局的独立进程,如果以":"开头则为此服务开启一个为此应用私有的独立进程。举个具体的例子吧,我们新建了一个 Application,创建了主进程com.cnblogs.tianxia,那么:
我们没必要建立一个全局的,本文选择第二种方案,创建一个当前应用私有的独立进程。
3.通知用户和点击查看
其中MessageActivity是点击跳转的activity,负责处理查看详细信息。
我们在其他Activity中调用一下:
运行一下:
4.停止服务
运行一下,停止服务后,却出乎意料的并没有停下来,怎么回事?是不是代码写错了?
代码没有错,错在我们停止了服务,却没有停止进程,退出线程。
5.退出线程
实践证明,Thread的stop()方法并不可靠。但是我们有其他的办法。
在代码面前,程序员就是上帝。
退出线程有两种方法。
第一种方法,强制退出。
第二种方法,设置isRunning为false。
综合一下,我们在MessageService中重载onDestroy()方法如下:
好了,现在无论是手动停止,还是从任务管理器中强制停止Service,消息服务和消息线程都能正常的停止和退出了。
1.轮询服务器
一般的应用,定时通知消息可以采用轮询的方法从服务器拿取消息,当然实时消息通知的话,建议采用推送服务。
其中需要注意轮询的频率设置,要在需求和性能中平衡。
2.独立进程
无论程序是否正在运行,我们都要能通知到客户,我们需要一个独立进程的后台服务。
我们需要一个独立进程的后台服务。
在AndroidManifest.xml中注册Service时,有一个android:process属性,如果这个属性以"."开头,则为此服务开启一个全局的独立进程,如果以":"开头则为此服务开启一个为此应用私有的独立进程。举个具体的例子吧,我们新建了一个 Application,创建了主进程com.cnblogs.tianxia,那么:
3.通知用户和点击查看
我们在其他Activity中调用一下:
4.停止服务
代码没有错,错在我们停止了服务,却没有停止进程,退出线程。
5.退出线程
实践证明,Thread的stop()方法并不可靠。但是我们有其他的办法。
在代码面前,程序员就是上帝。
退出线程有两种方法。
第一种方法,强制退出。
Android学习系列(7)--App轮询服务器消息
相关文章推荐
- Android学习系列(7)--App轮询服务器消息
- Android学习系列(7)--App消息通知机制
- Android学习系列(7)--App消息通知机制
- Android学习系列(7)--App轮询服务器消息
- Android学习系列(4)--App自适应draw9patch不失真背景
- Android学习系列(9)--App列表之分组ListView
- Android系列学习讲座之四)--App自适应draw9patch不失真背景
- Android学习系列(19)--App离线下载
- Android系列学习讲座之六--App模块化及工程扩展
- Android学习系列(1)--为App签名(为apk签名)
- Android学习系列(4)--App自适应draw9patch不失真背景
- Android系列学习讲座之一--为App签名(为apk签名)
- Android学习系列(4)--App自适应draw9patch不失真背景
- Android学习系列(5)--App布局初探之简单模型
- Android系列学习讲座之五--App布局初探之简单模型
- Android学习系列(23)--App主界面实现
- Android学习系列(4)--App自适应draw9patch不失真背景
- Android学习系列(4)--App自适应draw9patch不失真背景(我见过最全的)
- Android学习系列(12)--App列表之拖拽GridView
- [转]Android学习系列(1)--为App签名(为apk签名)