Service使用技巧,一些不为人知的功能 [移动平台 Android]
来源:互联网 发布:ubuntu系统能干什么 编辑:程序博客网 时间:2024/05/02 00:40
平常经常有一些Android爱好者问我Android服务有什么用,跟线程不是差不多吗,还有Service是继承Context 是不是跟Activity有相同的特性。还有经常在CSDN上也遇上好多朋友问到这样的问题,看到他们的问题后,我思考了好久,总结出一个问题是他们把Service与Activity和Thread之间的区别与联系弄混了,其实他们之间是有异同的。接下来我从不同的角度来分析一下他们之间的异同:
1. 1.Thread在run执行完后线程自动消失,而Service用户不调用stopService()服务就不会停止。
2. Activity与Service 都继承至Context,他们具有Context共同的特性,比如启动服务、注册广播等。
3. 可以同时创建多个Thread和Activity,而Service只能创建一个进程空间。
4. Service可以开机自动启动,而其它任何进程不能实现开机自动启动。
5. Thread可以处理耗时操作,而Activity与Service不能实现耗时操作。
以上是他们所存在的异同,从以上异同我为大家总结一下Service所使用的场景:
1. .打电话、接电话功能:一个电话只有一个电话管理的服务,它不可能有两个服务来管理这个电话的接听与拔出,这样的情况下可 以使用服务,并且该服务需要在手机开机后会立即启动,这样的功能只有服务才能做到。假如我们不使用服务而使用Thread,可以想象打进来的一个电话会被多少Thread所监听到。
2. 即时聊天功能的接收使用的广播:从此面一个原因可以看出,服务只能存在一个,所以我们也可以推算出,如果在一个服务的onCreate里面创建一个对象,那这个对象永远也是唯一的。一般我们启动一个服务都会随之注册一个广播,此广播因为在服务里面注册,所以此广播也是系统唯一的。所以此广播一般都是随着服务的开启就被注册,服务的停止就被注销。所以像即时聊天功能的应用,一般是在启动一个服务,此服务就注册一个广播,此广播接收从Socket接收到的数据,将数据在广播里面处理完后就发送给UI层。假如我们使用Thread来接收Socket的数据,如果Thread启动了多个,那Socket接收的数据可能 就被多个Thread所接收,所以发送给界面的入口就多了。有人会问为什么把广播放在Service里面注册,我想,如果广播不在Service里面注册那只有在Activity里面注册,如果Activity关闭了你又将如何监听网络的数据,如果关机了,你想开机自动监听又将如何监听。所以服务里面搭配一个应用唯一的广播,是即时通讯功能里面常用的手法。
3.
1. 1.Thread在run执行完后线程自动消失,而Service用户不调用stopService()服务就不会停止。
2. Activity与Service 都继承至Context,他们具有Context共同的特性,比如启动服务、注册广播等。
3. 可以同时创建多个Thread和Activity,而Service只能创建一个进程空间。
4. Service可以开机自动启动,而其它任何进程不能实现开机自动启动。
5. Thread可以处理耗时操作,而Activity与Service不能实现耗时操作。
以上是他们所存在的异同,从以上异同我为大家总结一下Service所使用的场景:
1. .打电话、接电话功能:一个电话只有一个电话管理的服务,它不可能有两个服务来管理这个电话的接听与拔出,这样的情况下可 以使用服务,并且该服务需要在手机开机后会立即启动,这样的功能只有服务才能做到。假如我们不使用服务而使用Thread,可以想象打进来的一个电话会被多少Thread所监听到。
2. 即时聊天功能的接收使用的广播:从此面一个原因可以看出,服务只能存在一个,所以我们也可以推算出,如果在一个服务的onCreate里面创建一个对象,那这个对象永远也是唯一的。一般我们启动一个服务都会随之注册一个广播,此广播因为在服务里面注册,所以此广播也是系统唯一的。所以此广播一般都是随着服务的开启就被注册,服务的停止就被注销。所以像即时聊天功能的应用,一般是在启动一个服务,此服务就注册一个广播,此广播接收从Socket接收到的数据,将数据在广播里面处理完后就发送给UI层。假如我们使用Thread来接收Socket的数据,如果Thread启动了多个,那Socket接收的数据可能 就被多个Thread所接收,所以发送给界面的入口就多了。有人会问为什么把广播放在Service里面注册,我想,如果广播不在Service里面注册那只有在Activity里面注册,如果Activity关闭了你又将如何监听网络的数据,如果关机了,你想开机自动监听又将如何监听。所以服务里面搭配一个应用唯一的广播,是即时通讯功能里面常用的手法。
3.
QQ群:166711323
微信扫一扫
- Service使用技巧,一些不为人知的功能 [移动平台 Android]
- (柯昌合)Service使用技巧,一些不为人知的功能 [移动平台 Android](柯昌合)
- Service使用技巧,一些不为人知的功能
- google一些不为人知的技巧
- chromel一些不为人知的功能
- Android 一些不为人知的东西
- Intellij IDEA 一些不为人知的技巧
- Intellij IDEA 一些不为人知的技巧
- Pycharm中一些不为人知的技巧
- Intellij IDEA 一些不为人知的技巧
- 腾讯QQ不为人知的使用技巧
- Android 一些不为人知的小秘密
- Android 一些不为人知的小秘密
- C语言printf()函数中一些不为人知的技巧!
- C语言printf()函数中一些不为人知的技巧!
- Android Service使用技巧
- android移动广告平台集成的一些问题
- Web Service与DWR结合使用时的一些技巧
- HTML5 Web Sockets与代理服务器交互
- hdu 1045 hdoj 1045
- http://blog.csdn.net/feixiaoxing 多线程 算法
- Android控件组合应用三
- 国外程序员推荐的免费编程书籍资源
- Service使用技巧,一些不为人知的功能 [移动平台 Android]
- C语言中系统函数在linux下的使用
- How tnsping work: Comparison of Oracle's tnsping to TCP/IP's ping [ID 146264.1]
- MFC文档应用程序实现文件拖拽到应用程序中显示
- 用C#读写ini配置文件完整范例
- Android控件组合应用四
- hdu 1058 hdoj 1058
- 在Visual C++中用ADO进行数据库编程
- 查找一个类的好方法,可节省做很多层的传递