要知道如果调用函数startService方法,那么即使你的程序退出了,但是Service依然运行在后台;也就是说此时想要停止service必须调用stopService方法。

    现在我们把Activity与Service绑定在一起,那就是Service要随着程序的退出而终止,此时调用的方法为bindService方法,方法如下:

    A. 编写需要运行在后台的类继承自android.app.Service。

      public class MyService extends Service {

        //服务生命周期 创建,开始,销毁
         /**
            * 创建
          */
         @Override
       public void onCreate() {
        // TODO Auto-generated method stub
          super.onCreate();
          Log.d("info", "Service Create");
         }
         /*
            * 开始
            * (non-Javadoc)
            * @see android.app.Service#onStart(android.content.Intent, int)
          */
       @Override
         public void onStart(Intent intent, int startId) {
          // TODO Auto-generated method stub
            super.onStart(intent, startId);
            Log.d("info", "Service Start");
           }
           /**
                * 销毁 
            */
        @Override
          public void onDestroy() {
          // TODO Auto-generated method stub
            super.onDestroy();
            Log.d("info", "Service Destroy");
           }

          /**
              * 当Service与Activity成功绑定时调用这个方法(non-Javadoc)
            * @see android.app.Service#onBind(android.content.Intent)
            */
         @Override
           public IBinder onBind(Intent arg0) {
            Log.d("info","Service Bind Success");
            return null;
            }
           /**
              * 重新绑定
            */
         @Override
           public void onRebind(Intent intent) { 
              super.onRebind(intent);
            Log.d("info","Service ReBind Success");
           }
           /**
              * 取消绑定
            */
         @Override
           public boolean onUnbind(Intent intent) {
             Log.d("info","Service Unbind Success");
            return super.onUnbind(intent);
            }
       }

    B.  在AndroidManifest.xml中配置<service>标签

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

    

    C. 绑定服务:

      (1) 通过使用Activity的bindService(Intent service,ServiceConnection conn,int flags)完成

      由该方法的第二个参数可以确定第二步要做什么

      (2) 编写类实现ServiceConnection 接口

        class MyServiceConnection implements ServiceConnection
            {

          @Override
            public void onServiceConnected(ComponentName arg0, IBinder arg1) {
             Log.d("info", "Service Connection Success");
             //成功连接服务,该方法被执行。在该方法中可以通过IBinder对象取得onBind方法的返回值,一般通过向下转型

          }

           @Override
            public void onServiceDisconnected(ComponentName arg0) {
             // TODO Auto-generated method stub
             Log.d("info", "Service Connection Filed");
             //连接失败执行
            }
     
          }

        (3)使用

         class BtnClick implements OnClickListener
              {
              @Override
            public void onClick(View arg0) {
             Intent intent = new Intent(Main.this,MyService.class);   
             MyServiceConnection myServiceConnection = new MyServiceConnection();
             switch (arg0.getId()) {
               case R.id.btnStart:        
                  Main.this.startService(intent);
                  break;
               case R.id.btnStop:    
                  Main.this.stopService(intent);
                  break;
               case R.id.btnBind:
                   Main.this.bindService(intent,myServiceConnection ,Context.BIND_AUTO_CREATE);
                   break;  
               case R.id.btnUnBind:
                    //ServiceConnection必须是全局变量否则此处报错
                   Main.this.unbindService(myServiceConnection );
                    break;
               default:
                   break;
               }   
            }
     
            }

***开启service有两种方法,一种startService,另一种是bindService。如果两种方法同时使用的话,不论是先启用startService先还是启用bindService先,都需要先等待解除绑定服务再能调用stopService方法,程序才会自动回调destroy。不论是先启用startService先还是启用bindService先,然后再退出程序,以startService启动的服务忍然需要当程序再次启动后调用stopService停止服务。

第8章 Service基础Activity与Service绑定相关推荐

  1. android activity 通知 service,android activity和service通信问题

    首先,题主有个理解错误的地方, startService 只是开启 service ,service运行在后台,还是有可能因内存不足而被杀死. 第二点, service 可以以混合启动的形式启动,也就 ...

  2. Activity与Service通信

    Activity与Service通信 Activity与Service通信的方式有三种: 继承Binder类 这个方式只有当你的Acitivity和Service处于同一个Application和进程 ...

  3. android 启动服务同时传递数据,Android Studio开发基础之起动Service,并通过从Activity向Service传递数据...

    Android Studio开发基础之启动Service,并通过从Activity向Service传递数据 本实例演示启动Service,并通过从Activity向Service传递数据,新建一个Se ...

  4. 安卓基础巩固(二):四大组件:Activity、Service、Broadcast、Content Provider

    文章目录 Activity 生命周期 onCreate和onStart的区别 onPause和onStop的区别 生命周期的变化 Activity的启动 Intent Bundle Activity携 ...

  5. 【重识云原生】第六章容器基础6.4.9.2节——使用 Service 连接到应用

    <重识云原生系列>专题索引: 第一章--不谋全局不足以谋一域 第二章计算第1节--计算虚拟化技术总述 第二章计算第2节--主流虚拟化技术之VMare ESXi 第二章计算第3节--主流虚拟 ...

  6. Android基础再回首——四大组件之Activity、Service俩兄弟

    Android基础再回首--四大组件之Activity.Service俩兄弟 偶尔的回首过去,总是有不一样的收获.今天就来回顾下Activity和service吧,不用嫌弃太基础了,打好基础是取得成功 ...

  7. Android Studio开发基础之启动Service,并通过从Activity向Service传递数据

    本实例演示启动Service,并通过从Activity向Service传递数据,新建一个Service,并敲如下代码: package com.example.lhb.startservice;imp ...

  8. 【重识云原生】第六章容器基础6.4.9.6节——Service 与 Pod 的DNS

    1 Service 与 Pod 的 DNS Kubernetes 为 Service 和 Pod 创建 DNS 记录. 你可以使用一致的 DNS 名称而非 IP 地址访问 Service. Kuber ...

  9. android service交互,Android Activity与Service的交互方式

    参考: http://blog.csdn.net/gebitan505/article/details/18151203 实现更新下载进度的功能 1. 通过广播交互 Server端将目前的下载进度,通 ...

最新文章

  1. 【Shell脚本】逐行处理文本文件
  2. 怎么将excel中的url批量转化为图片_阿里云+Power BI,轻松实现图片可视化报告(一)...
  3. !JS实战之随机像素图
  4. 【大会】5G现象级应用倒计时24个月
  5. 变换上三角矩阵_关于马尔可夫矩阵的一些个人研究成果、思考过程及相关解释...
  6. Java多线程编程:变量共享分析(Thread)
  7. 关于大型网站技术演进的思考(八)--存储的瓶颈终篇(8)
  8. MATLAB————用reshape()函数将矩阵转换为张量
  9. cocos2dx飞机大战开发记录(3)
  10. CISCO 路由器的E1模块配置指南
  11. HTML5标签canvas制作动画
  12. 点到直线的距离直线的交点及夹角
  13. matlab 随机信道,随机空时无线信道模型及Matlab仿真
  14. 爬取奇迹秀工具箱里面的文本和软件网盘链接
  15. Touch 电容式触摸按键 触摸按键PCB设计参考
  16. 统计学习之第三天(可汗学院公开课:统计学)
  17. excel单元格内容拆分_EXCEL批量拆分单元格,也可以这么快
  18. Golang sync.Cond 简介与用法
  19. 量化人才之战如何取胜
  20. JS实现雪花飘落特效效果

热门文章

  1. C++ 多继承 初步01
  2. C++ 对引用的理解2
  3. go定时器 每天重复_Go语言学习基础-定时器、计时器
  4. 信号量sem_init,sem_wait,sem_post
  5. mysql数据库文件位置
  6. Ubuntu 装机软件
  7. BZOJ1453: [Wc]Dface双面棋盘
  8. K8S的HelloWorld之旅
  9. centos7安装oracle12c 一
  10. activiti 部署流程图后中文乱码