服务是在后台运行 可以理解成是没有界面的activity
  定义四大组件的方式都是一样的  
  定义一个类继承Service
 
  start方式开启服务的特点
  特点:
  (1)服务通过startservice方式开启 第一次点击按钮开启服务 会执行服务的onCreate 和 onStart方法
  (2)如果第二次开始在点击按钮开启服务 服务之后执行onStrat方法
  (3)服务被开启后 会在设置页面里面的 running里面找得到这个服务 
  ***(4)startservice 方式开启服务 服务就会在后台长期运行 直到用户手工停止 或者调用StopService方法 服务才会被销毁
 
 bindService 方式开启服务的特点
 (1)当点击按钮第一次开启服务 会执行服务的onCreate方法 和 onBind()方法
 (2) 当我第二次点击按钮在调用bindservice  服务没有响应 
 **(3) 当activity销毁的时候服务也销毁  不求同时生但求同时死 
 (4)通过bind方式开启服务  服务不能再设置页面里面找到  相当于是一个隐形的服务
 (5)bindservice不能多次解绑 多次解绑会报错
 
为什么要引入bindService
目的为了调用服务里面的方法
 
/**
* 定义服务 需要在清单文件里面配置
* @author
*
*/
public class FirstService extends Service { @Override
public IBinder onBind(Intent intent) { System.out.println("onBind");
return null;
} //当服务第一次被开启的时候调用
@Override
public void onCreate() {
System.out.println("onCreate");
super.onCreate();
} @Override
public int onStartCommand(Intent intent, int flags, int startId) {
System.out.println("onStartCommand");
return super.onStartCommand(intent, flags, startId);
} //服务销毁的时候执行
@Override
public void onDestroy() {
System.out.println("onDestroy");
super.onDestroy();
} }
/**
* activity 你大爷 是 服务
*
* @author
*
*/
public class MainActivity extends Activity { private MyConn conn; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); } // 点击按钮开启服务
public void click1(View v) { Intent intent = new Intent(this, FirstService.class);
// 开启服务
startService(intent); } // 点击按钮停止服务
public void click2(View v) {
Intent intent = new Intent(this, FirstService.class);
stopService(intent);
} // 点击按钮通过 bindservice 方式去开启服务
public void click3(View v) {
Intent intent = new Intent(this,FirstService.class); //连接到服务FirstService conn = new MyConn();
System.out.println("bind----"+conn);
bindService(intent,conn, BIND_AUTO_CREATE); } //点击按钮 取消绑定服务
public void click4(View v) {
System.out.println("unbind----"+conn);
unbindService(conn);
} //当activity销毁的时候调用
@Override
protected void onDestroy() {
//当activity销毁的时候 取消绑定服务
unbindService(conn); super.onDestroy();
} //用来监听服务的状态
private class MyConn implements ServiceConnection{ //连接成功后调用
@Override
public void onServiceConnected(ComponentName name, IBinder service) { } //失去连接调用
@Override
public void onServiceDisconnected(ComponentName name) { } } }

AndroidManifest.xml

        <!--配置服务   -->

        <service android:name="com.itheima.service.FirstService">
</service>

start方式开启服务的特点&bindService 方式开启服务的特点的更多相关文章

  1. 安卓服务(Service)的两种开启方式以及服务的生命周期

    安卓中服务的开启方式 一:採用start的方式开启服务 调用函数:startService(Intent)->onCreate()->onStart()/onStartCommand()- ...

  2. 【Java EE 学习 80 下】【调用WebService服务的四种方式】【WebService中的注解】

    不考虑第三方框架,如果只使用JDK提供的API,那么可以使用三种方式调用WebService服务:另外还可以使用Ajax调用WebService服务. 预备工作:开启WebService服务,使用jd ...

  3. 【学习笔记】启动Nginx、查看nginx进程、查看nginx服务主进程的方式、Nginx服务可接受的信号、nginx帮助命令、Nginx平滑重启、Nginx服务器的升级

     1.启动nginx的方式: cd /usr/local/nginx ls ./nginx -c nginx.conf 2.查看nginx的进程方式: [root@localhost nginx] ...

  4. python 之 并发编程(开启子进程的两种方式,进程对象的属性)

    第九章并发编程 同一个程序执行多次是多个进程 import time import os ​ print('爹是:',os.getppid()) #父进程PID,(pycharm) print('me ...

  5. SSH服务及通过SSH方式登录linux

    SSH服务及通过SSH方式登录linux 1.检查SSH服务转自:[1]Linux之sshd服务https://www.cnblogs.com/uthnb/p/9367875.html[2]Linux ...

  6. SpringCloud微服务实战——搭建企业级开发框架(四十四):【微服务监控告警实现方式一】使用Actuator + Spring Boot Admin实现简单的微服务监控告警系统

      业务系统正常运行的稳定性十分重要,作为SpringBoot的四大核心之一,Actuator让你时刻探知SpringBoot服务运行状态信息,是保障系统正常运行必不可少的组件.   spring-b ...

  7. C#高性能TCP服务的多种实现方式

    哎~~ 想想大部分园友应该对 "高性能" 字样更感兴趣,为了吸引眼球所以标题中一定要突出,其实我更喜欢的标题是<猴赛雷,C#编写TCP服务的花样姿势!>. 本篇文章的主 ...

  8. angularjs 自定义服务的三种方式

    angularjs 中可通过三种($provider,$factory,$service)方式自定义服务,以下是不同的实现形式: // 定义module , module中注入$providevar ...

  9. Day9 进程理论 开启进程的两种方式 多进程实现并发套接字 join方法 Process对象的其他属性或者方法 守护进程 操作系统介绍

    操作系统简介(转自林海峰老师博客介绍) #一 操作系统的作用: 1:隐藏丑陋复杂的硬件接口,提供良好的抽象接口 2:管理.调度进程,并且将多个进程对硬件的竞争变得有序 #二 多道技术: 1.产生背景: ...

随机推荐

  1. springboot的build.gradle增加阿里仓库地址以及eclipse增加lombok

    该随笔仅限自己记录,请谨慎参考!! 为什么把这2块内容放一个标题里? 发现lombok和eclipse结合的一些问题 关于lombok如何与eclipse结合,网上应该有很多教程,我这块已经做过了,但 ...

  2. CSS基础 华为渐变色产品列表 综合实战

    华为网页链接:https://www.huawei.com/cn/?ic_medium=direct&ic_source=surlent html代码部分: <div class=&qu ...

  3. Selenium_使用switch_to.window方法处理窗口切换(12)

    想一下这样的场景,打开页面A点击一个链接,在一个新的窗口打开页面B,由于之前的driver实例对象在页面A,但是你接下来操作的元素在页面B中,此时脚本就会报错找不到元素.该场景需要使用到seleniu ...

  4. 第10组 Beta冲刺 (5/5)

    1.1基本情况 ·队名:今晚不睡觉 ·组长博客:https://www.cnblogs.com/cpandbb/p/14018671.html ·作业博客:https://edu.cnblogs.co ...

  5. sqoop的使用之import导入到HDFS

    原文链接: https://www.toutiao.com/i6772128429614563843/ 首先我们已经安装好sqoop了,如果没有安装好参考文档<快速搭建CDH-Hadoop-Hi ...

  6. HDUA/B

    同样求逆元的题目,费马的条件,首先要保证p为质数,然后保证a与p互素. 数据范围问题,要保证在数据范围内,所以要b先模上mod #include<bits/stdc++.h> using ...

  7. 面试必问之 CopyOnWriteArrayList,你了解多少?

    一.摘要 在介绍 CopyOnWriteArrayList 之前,我们一起先来看看如下方法执行结果,代码内容如下: public static void main(String[] args) { L ...

  8. 2022 跳槽涨薪必不可少面试通关宝典 —— css 篇

    生于忧患死于安乐!已经居家隔离 23 天了,解封以后估计就得找工作了,提前准备起来!需要的赶紧收藏起来 一.谈谈你对 BFC 的理解及作用. BFC 是 Block Formatting Contex ...

  9. Centos下安装Scala(1)

    1.登录centos至root角色下 配置环境变量 2.执行下述命令 scala -version 出现结果如下 输入 'y' 3.开始安装 4.安装完成界面 5.启动成功以及测试程序

  10. 热词cloud-EChart安装

    1.安装npm install echarts npm install echarts-wordcloud注意版本:echarts版本5只能和wordcloud版本2的一起使用 :echarts版本4 ...