美文网首页
多线程2

多线程2

作者: 锋锋锋 | 来源:发表于2016-07-11 01:23 被阅读21次

    基础知识

    绑定服务是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

    相关文章

      网友评论

          本文标题:多线程2

          本文链接:https://www.haomeiwen.com/subject/dpodjttx.html