Android开发07_Service服务
来源:互联网 发布:java自然语言处理 pdf 编辑:程序博客网 时间:2024/05/17 17:18
一、前言
Service是Android四大组件之一,多用于服务,像微信这种永远杀不死的后台进程据说就是用Service做的,此话并不是说Service杀不死,而是每当你启动了微信,微信的就会在后台启动两个Service,一个负责做功能,另一个负责唤醒功能的Service,当你手动去杀微信微信进程时,即使负责功能的Service被杀死了,负责唤醒的Service就会重新唤醒负责功能的Service,所以给我们展示的效果就是微信进程永远杀不死的神奇现象。
有些码农可能认为Activity不可以做这些事情吗?为什么飞到Service来做,这就要牵涉到Service的特点,它和Activity最大的区别就是Activity有界面,二Service没有,所以它是可以运行于后台的。
二、自定义Service使用
1、自定义Service,继承Service,当然Service也有自己的生命周期,类似于Activity,因为Service是在后台运行的,所以它的生命周期相对来说没那么重要,只需理解掌即可。
2、需要在manifests中去注册,我们说过manifests中可以注册四大组件的任意一个,有些是必须要注册的,有些事非必需的,理解记忆
<!-- 注册Service --><service android:name=".MyService" />
3、启动Service:这里类比Activity的跳转,Service的启动也分显示启动和隐式启动
显示启动:
Intent intent = new Intent();intent.setClass(this, MyService.class);startService(intent);
隐式启动:
<!-- 注册Service --><service android:name=".MyService"> <action android:name="qd" /></service>
4、绑定服务:Service的绑定是通过ServiceConnection对象绑定的,由于ServiceConnection本身是个接口类,初始化ServiceConnection对象需要重写两个抽象方法:onServiceConnected和onServiceDisConnected,分别在建立连接和断开连接时调用
/** * 绑定服务 */public void btn03(View v) { Intent intent = new Intent(this, MyService.class); bindService(intent, serviceConnection, BIND_AUTO_CREATE);//绑定服务 Log.e("TAL", "1>>>" + myIBinder);}/** * ServiceConnection */public ServiceConnection serviceConnection = new ServiceConnection() { @Override public void onServiceConnected(ComponentName name, IBinder service) { //建立连接 myIBinder = (MyService.MyIBinder) service; Log.e("TAL", "2>>>" + myIBinder); } @Override public void onServiceDisconnected(ComponentName name) { //断开连接 }};
5、在绑定服务成功后,如果想要通过Activity来调取Service类里的方法,需要在Service中新建一个Binder对象,并在Service的OnBind方法中返回此对象,那么在Activity的ServiceConnection中就可以对onServiceConnected的IBinder对象全局赋值并使用了
/** * 自定义IBinder * <p> * # 1 实现IBinder * <p> * # 2 继承Binder */public class MyIBinder extends Binder {}@Nullable@Overridepublic IBinder onBind(Intent intent) { Log.e("TAL", "onBind"); return new MyIBinder();}
6、服务也可销毁
/** * 关闭服务 */public void btn02(View v) { stopService(new Intent(this, MyService.class));}
三、总结
1、服务一般用于做不需要界面展示的工作,比如短信拦截、音乐播放器后台播放
2、服务不和Activity同生共死,一般在Activity的finish的方法中调用stopService即可做到在关闭Activity的时候关闭服务
- Android开发07_Service服务
- Android开发_Service服务相关
- Android开发_Service组件
- Android开发_Service
- Android 复习_Service 一
- Android 复习_Service 二
- Android学习_Service
- Android核心基础_service
- 步步为营_Android开发课[5]_Service学习
- Android位置服务开发
- android开发 - Service服务
- Android开发常用服务
- 开发Android服务
- Java服务提供者框架_Service Provider Framework_Effective Java 2.0_Item 1知识点
- Android进阶#(1/12)Android的构成基石——四大组件_Service与AIDL
- 开发Android硬件访问服务
- android 服务(service)开发
- 【Android 开发教程】自定义服务
- 构想中的进阶智人
- C++学习笔记
- 原生js操作DOM元素
- 函数栈的内存分配大小
- 小程序学习用demo推荐:豆瓣使用es6;附开发总结(适用1221)
- Android开发07_Service服务
- MySQL-5.7解压版(zip版)安装配置教程
- Leetcode 之 Swap Nodes in Pairs
- 剑指offer在线编程
- lintcode,翻转链表 II
- [点双连通分量 缩点 树链剖分] Codeforces 487E #278 (Div. 1) E. Tourists
- Jquery validate验证表单时多个name相同的元素只验证第一个的问题
- 贝叶斯分类算法
- glide加载图片