1 Service 简介

Service 是Android 四大组件之一 一般在后台运行,无用户界面,用户无法看到。

Service主要用于组件之间交互(例如:与ActivityContentProviderBroadcastReceiver进行交互)、后台执行耗时操作等(例如下载文件,播放音乐等,但Service在主线程运行时长不能超过20s,否则会出现ANR,耗时操作一般建议在子线程中进行操作)。

2 Service 模式

Service启动模式主要分两种: 1. 启动模式。 2. 绑定模式。

启动模式的生命周期为 StartService--> onCreate---> onStartCommand-->onDestory

绑定模式的生命周期为 BindService--->onCreate--->onBind--->onUnBind---->onDestory

3 代码介绍Service的使用

先看下启动服务

3.1 创建的服务要继承Service

3.2 必须在Androidmainfest.xml 中注册

下面看看代码-----写一个简单的开启与关闭服务

  //启动服务findViewById(R.id.start).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = new Intent(MainActivity.this, MyService.class);startService(intent);}});//关闭服务findViewById(R.id.close).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = new Intent(MainActivity.this, MyService.class);stopService(intent);}});

然后我们在看看创建的MyService 代码

public class MyService extends Service {@Nullable@Overridepublic IBinder onBind(Intent intent) {return null;}@Overridepublic void onCreate() {super.onCreate();Log.e("----------服务创建","111111111111");}@Overridepublic int onStartCommand(Intent intent, int flags, int startId) {Log.e("----------服务调用","111111111111");return super.onStartCommand(intent, flags, startId);}@Overridepublic void onDestroy() {super.onDestroy();Log.e("----------服务销毁","111111111111");}
}

代码里面有一个onBind 这个无论是启动服务还是绑定服务都会存在的,在启动服务里面不用关返回null就行

在绑定服务里面可以返回要绑定的内容

最后别忘记在配置文件中注册了

   <service android:name=".MyService" />

配置文件的属性如下

<service android:name=".Myservice"
            android:enabled="true"
            android:exported="true"
            android:icon="@drawable/background_blue"
            android:label="string"
            android:process="string"
            android:permission="string">
 </service>
android:exported    表示是否允许除了当前程序之外的其他程序访问这个服务
android:enabled    表示是否启用这个服务
android:permission    是权限声明
android:process    是否需要在单独的进程中运行,当设置为android:process=”:remote”时,代表Service在单独的进程中运行。注意“:”很重要,它的意思是指要在当前进程名称前面附加上当前的包名,所以“remote”和”:remote”不是同一个意思,前者的进程名称为:remote,而后者的进程名称为:App-packageName:remote。
android:isolatedProcess     设置 true 意味着,服务会在一个特殊的进程下运行,这个进程与系统其他进程分开且没有自己的权限。与其通信的唯一途径是通过服务的API(bind and start)。

绑定服务

 //绑定服务findViewById(R.id.bind).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = new Intent(MainActivity.this, BindService.class);bindService(intent, conn, Service.BIND_AUTO_CREATE);}});//解绑服务findViewById(R.id.unbind).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {unbindService(conn);}});

bindService 里面有三个参数 第三个是一个标记,个人理解为绑定看下其代码

public class MainActivity extends AppCompatActivity {private ServiceConnection conn;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);conn = new ServiceConnection() {@Overridepublic void onServiceConnected(ComponentName name, IBinder service) {BindService.MyBinder binder = (BindService.MyBinder) service;binder.start();binder.end();}@Overridepublic void onServiceDisconnected(ComponentName name) {}};
}
}

绑定的服务

public class BindService extends Service {//初始化自定义的Binder对象private MyBinder mBinder = new MyBinder();public class MyBinder extends Binder {public void start() {Log.e("----------start", "start:");}public void end() {Log.e("-----------end", "end:");}}@Overridepublic void onCreate() {super.onCreate();Log.e("------------hxm", "onCreate");}@Nullable@Overridepublic IBinder onBind(Intent intent) {Log.e("------------hxm", "IBinder");return mBinder;}@Overridepublic boolean onUnbind(Intent intent) {Log.e("------------hxm", "onUnbind");return super.onUnbind(intent);}@Overridepublic void onDestroy() {super.onDestroy();Log.e("------------hxm", "onDestroy");}
}

个人写一个demo 点击查看吧

参考文章

https://mp.weixin.qq.com/s?__biz=MzU4MTIzMjM3MA==&mid=2247484827&idx=2&sn=80212d30ef757afccd0e601ce73f14a1&scene=21#wechat_redirect

https://blog.csdn.net/weixin_39460667/article/details/82770164

android Service 的使用相关推荐

  1. Android Service

    Android Service 和BroadCast .Activity.以及ContentProvider并称为安卓四大组件.在日常开发中接触最多的是Activity,因为android其实就是一个 ...

  2. android 浏览器源码分析,从源码出发深入理解 Android Service

    原标题:从源码出发深入理解 Android Service 原文链接: 建议在浏览器上打开,删除了大量代码细节,:) 本文是 Android 系统学习系列文章中的第三章节的内容,介绍了 Android ...

  3. android service 学习(上)

    转载自:http://www.cnblogs.com/allin/archive/2010/05/15/1736458.html Service是android 系统中的一种组件,它跟Activity ...

  4. android service 学习(下)

    android service 学习(下) 通常每个应用程序都在它自己的进程内运行,但有时需要在进程间传递对象,你可以通过应用程序UI的方式写个运行在一个不同的进程中的service.在android ...

  5. android service是单例么,android 使用单例还是service?

    stackover看到的回答,挺不错的. I'm quite new to Android development. When is it a good idea to create an Andro ...

  6. Android Service的思考(1)

    在Android框架中,Service是比较难以理解的一部分,傻蛋查阅了相关资料和经过一系列的代码测试,准备写一个系列文章,尝试着把Service由浅入深的梳理一遍,帮助大家更快的掌握Android ...

  7. Android Service 服务(二)—— BroadcastReceiver

    一. BroadcastReceiver简介 BroadcastReceiver,用于异步接收广播Intent,广播Intent是通过调用Context.sendBroadcast()发送.Broad ...

  8. Android Service完全解析,关于服务你所需知道的一切(下)

    转载请注册出处:http://blog.csdn.net/guolin_blog/article/details/9797169 在上一篇文章中,我们学习了Android Service相关的许多重要 ...

  9. Android Service使用方法--简单音乐播放实例

    Service翻译成中文是服务,熟悉Windows 系统的同学一定很熟悉了.Android里的Service跟Windows里的Service功能差不多,就是一个不可见的进程在后台执行. Androi ...

  10. Android Service的onStartCommand返回值用法

    2019独角兽企业重金招聘Python工程师标准>>> Android Service的onStartCommand返回值用法 本文目的:使读者快速理解 1.START_STICKY ...

最新文章

  1. Redis+Nginx+设计模式+Spring全家桶+Dubbo阿里P8技术精选文档
  2. android view爆炸效果,Android 显示view的粒子爆炸/绽放效果
  3. ASP.NET网页显示LED字体
  4. openresty开发系列2--nginx的简单安装,正向、反向代理及常用命令和信号控制介绍...
  5. Session的底层实现原理
  6. ai的预览模式切换_AI字体制作,用AI制作创意阶梯式文字
  7. Mysql外键约束foreign key
  8. windowsSDK加速键实例分析
  9. mpvue 调起子组件的方法_牢记 | 智鹏五金机电设备这些方法的使用更安全!
  10. php解析、封装JSON与XML
  11. 【Asp.Net】GridView控件中Datakeys和DataKeyNames的说明
  12. Mac版 QQ防撤回插件
  13. java分布式包含的技术_Java分布式架构核心技术[SSM组合+ springmvc+mybatis+shiro+restful+bootstrap]...
  14. 达人评测 Redmi G 2021锐龙版怎么样
  15. 现在能聊天的机器人都有哪些?
  16. 结果页要求用户复制链接进行分享 而不是直接调用浏览器分享API的原因
  17. SpringBoot整合Elasticsearch,中软国际java二面华为面试
  18. 混合波束成形matlab,探索 5G 系统的混合波束成形架构
  19. Elasticsearch基础
  20. 传奇人物郭盛华:汽车黑客,远远比我们想象中还要恐怖

热门文章

  1. springboot项目使用junit4进行单元测试,maven项目使用junit4进行单元测试
  2. Centos7常用命令
  3. Ubuntu使用wget下载zabbix的扩展源
  4. DateGridView列的输出顺序反了
  5. LeetCode简单题之字符串中的最大奇数
  6. 特斯拉fsd全自动驾驶与华为自动驾驶
  7. MinkowskiEngine基准测试
  8. Minkowski坐标管理
  9. 用于ONNX的TensorRT后端
  10. 基于TensorRT的BERT实时自然语言理解(上)