多线程2

基础知识

绑定服务是Service类的实现,可让其他应用与其绑定和交互。要提供服务绑定,您必须实现onBind()回调方法。该方法返回的IBinder对象定义了客户端用来与服务进行交互的编程接口。

绑定到已启动服务

正如服务文档中所述,您可以创建同时具有已启动和绑定两种状态的服务。 也就是说,可通过调用startService()启动该服务,让服务无限期运行;此外,还可通过调用bindService()使客户端绑定到服务。

如果您确实允许服务同时具有已启动和绑定状态,则服务启动后,系统“绝对不会”在所有客户端都取消绑定时销毁服务。 为此,您必须通过调用stopSelf()stopService()显式停止服务。

尽管您通常应该实现onBind()onStartCommand(),但有时需要同时实现这两者。例如,音乐播放器可能发现让其服务无限期运行并同时提供绑定很有用处。 这样一来,Activity 便可启动服务进行音乐播放,即使用户离开应用,音乐播放也不会停止。 然后,当用户返回应用时,Activity 可绑定到服务,重新获得回放控制权。

请务必阅读管理绑定服务的生命周期部分,详细了解有关添加绑定已启动服务时该服务的生命周期信息。

客户端可通过调用bindService()绑定到服务。调用时,它必须提供ServiceConnection的实现,后者会监控与服务的连接。bindService()方法会立即无值返回,但当 Android 系统创建客户端与服务之间的连接时,会调用ServiceConnection上的onServiceConnected(),向客户端传递用来与服务通信的IBinder

多个客户端可同时连接到一个服务。不过,只有在第一个客户端绑定时,系统才会调用服务的onBind()方法来检索IBinder。系统随后无需再次调用onBind(),便可将同一IBinder传递至任何其他绑定的客户端。

当最后一个客户端取消与服务的绑定时,系统会将服务销毁(除非startService()也启动了该服务)。

当您实现绑定服务时,最重要的环节是定义您的onBind()回调方法返回的接口。您可以通过几种不同的方法定义服务的IBinder接口,下文对这些方法逐一做了阐述。

创建绑定服务

可以通过三种方法定义接口

1.扩展 Binder 类

2.使用 Messenger

3.使用 AIDL

https://developer.android.com/guide/components/bound-services.html#Basics

三种方法均可以在上述网址上看到,这里就不一一陈述。

Android 通知栏Notification

功能作用

1.显示接收到短消息、即使消息等信息 (如QQ、微信、新浪、短信)

2.显示客户端的推送消息(如有新版本发布,广告,推荐新闻等)

3.显示正在进行的事物(例如:后台运行的程序)(如音乐播放器、版本更新时候的下载进度等)

对应的官方链接

官方:http://developer.android.com/design/patterns/notifications.html

译文:http://adchs.github.io/patterns/notifications.html

使用教程 :http://developer.android.com/training/notify-user/index.html

开发文档 :http://developer.android.com/reference/android/app/Notification.html

一个简单的Notification

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容