如果一个service已经启动了,activity和service绑定了在解除邦定,则这个service不会销毁,因为这个service不是这个Activity创建的。

service生命周期:

Activity绑定的同时创建service则解除绑定的时候service销毁。

main.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><Buttonandroid:id="@+id/btnStartService"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="start service" /><Buttonandroid:id="@+id/btnBindService"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="bind service" /><Buttonandroid:id="@+id/btnUnbindService"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="unBind service" /></LinearLayout>

mainACtivity.java

package com.sxt.day07_03;import com.sxt.day07_03.MyService.MyBinder;import android.app.Activity;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.Bundle;
import android.os.IBinder;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;public class MainActivity extends Activity {MyBinder mBider;Intent mIntent;private ServiceConnection conn=new ServiceConnection() {//conn是接口类型
        @Override//绑定后由于异常被迫解除绑定时调用。public void onServiceDisconnected(ComponentName name) {}@Override//绑定成功Service的onBind方法执行后调用,已经绑定成功再绑定是不会调用这个方法的,并接收onBind方法的返回值(传过来的是地址是同一个对象,要实现IBinder接口)public void onServiceConnected(ComponentName name, IBinder service) {mBider=(MyBinder) service;Log.i("main",service.toString()+",count:"+mBider.getCount());//返回11
        }};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);setListener();}private void setListener() {setStartServiceClickListener();bindServiceClickListener();unBindServiceClickListener();}private void unBindServiceClickListener() {findViewById(R.id.btnUnbindService).setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {if(mIntent==null){return ;}unbindService(conn);}});}private void bindServiceClickListener() {findViewById(R.id.btnBindService).setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {mIntent=new Intent(MainActivity.this, MyService.class);bindService(mIntent, conn, Context.BIND_AUTO_CREATE);//conn是绑定成功时候回调的接口的实现类,BIND_AUTO_CREATE表示如果没有启动则连绑定再启动。
            }});}private void setStartServiceClickListener() {findViewById(R.id.btnStartService).setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {mIntent=new Intent(MainActivity.this, MyService.class);startService(mIntent);}});}}

service.java

package com.sxt.day07_03;import android.app.Service;
import android.content.Intent;
import android.os.Binder;
import android.os.IBinder;
import android.util.Log;public class MyService extends Service {private int mCount=10;@Override//绑定成功的时候调用,已经绑定成功再绑定是不会调用这个方法的。public IBinder onBind(Intent intent) {MyBinder binder=new MyBinder();return binder;}class MyBinder extends Binder{//这里继承Binder类而不是IBinder接口,因为继承接口会重写方法,是不必要的。public int getCount(){return ++mCount;}}@Overridepublic void onCreate() {//创建的时候调用,先创建再绑定。super.onCreate();Log.i("main","onCreate()");}@Overridepublic boolean onUnbind(Intent intent) {Log.i("main","onUnbind");return true;//想解除绑定后再绑定则返回true,onUnbind方法执行后并执行onRebind方法
    }@Overridepublic void onRebind(Intent intent) {//解除绑定后再绑定执行这个方法super.onRebind(intent);Log.i("main","onRebind()");}@Overridepublic void onDestroy() {//如果这个Activity创建的这个service,则解绑的时候会调用onDestroy方法,如果不是这个Activity创建的则解绑的时候不会销毁这个service,因为不是他创建的。super.onDestroy();Log.i("main","onDestroy()");}
}

安卓的4大组件在自定义的时候都要在说明文件声明.

说明文件要添加:<service android:name="com.sxt.day07_03.MyService"/>

转载于:https://www.cnblogs.com/yaowen/p/4890685.html

android 47 service绑定相关推荐

  1. Android属于绑定服务特点是,android – 每个Service绑定是否需要一个ServiceConnection?...

    我想在我的Activity中绑定几个 Android服务,所以我可以监视用户的几个动作. 为了能够绑定每个服务,我将有几个,我的活动中是否需要几个私有ServiceConnections,如下所示? ...

  2. Android之Service

    2019独角兽企业重金招聘Python工程师标准>>> 1.Service的种类   按运行地点分类: 类别 区别  优点 缺点   应用 本地服务(Local) 该服务依附在主进程 ...

  3. Android中Service的使用

    我个人的理解是:我们平时使用的android系统的app的后台应用,就是这个原理 可以利用Service实现程序在后台运行,依照这个原理,可以通过Service来实现关键代码的运行与实现. <一 ...

  4. Android中Service深入学习

    概述 1.当用户在与当前应用程序不同的应用程序时,Service可以继续在后台运行. 2.Service可以让其他组件绑定,以便和它交互并进行进程间通信. 3.Service默认运行在创建它的应用程序 ...

  5. com.android.sadk卸载不掉,Android的Service的两种方式以及使用

    Service根据使用方式有两种:startService.bindService. 区别: ①启动方式:前者startService.后者bindService: ②和Activity联系:前者Ac ...

  6. Android 保持Service不被Kill掉的方法--双Service守护 Android实现双进程守护

    本文分为两个部分,第一部分为双Service守护,第二部分为双进程守护 第一部分: 一.Service简介:Java.lang.Object ↳Android.content.Context  ↳an ...

  7. Android应用程序绑定服务(bindService)的过程源代码分析

    Android应用程序组件Service与Activity一样,既可以在新的进程中启动,也可以在应用程序进程内部启动:前面我们已经分析了在新的进程中启动Service的过程,本文将要介绍在应用程序内部 ...

  8. 第8章 Service基础Activity与Service绑定

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

  9. 关于Android的Service知识点,你知道吗?

    目录 学习Service相关知识点: 概述: Service生命周期: Service的基本用法: 服务. 问:达叔,今日工作累吗? 答:累啊,那么问你,你知道Android中的 Service(服务 ...

最新文章

  1. Linux环境下编写一个shell程序,此程序的功能:随机生成一个1-100的数(答案)让用户猜
  2. safari 获取视频流_如何在Safari中将RSS feed和社交媒体合并为一个流
  3. _ASSERTE(_CrtIsValidHeapPointer(pUserData))错误详解
  4. 禅道PMS兼容redmine用户认证接口
  5. Nginx 静态页面POST 请求提示405 Not Allowed
  6. win7上python2.7连接mysql数据库
  7. (转)区块链创造了ICO,但是无法守护ICO
  8. Windows操作系统装机必备软件,值得收藏!
  9. MySQL理解索引、添加索引的原则
  10. 数据分析案例-基于随机森林模型对信用卡欺诈检测
  11. SpringMVC 之Resolver视图解析器笔记(六)
  12. 【历史上的今天】11 月 26 日:中国移动的第1亿个用户;Microsoft 确立名字;控制论鼻祖出生
  13. 谈谈HashMap为什么是线程不安全的?
  14. 我想找份好工作之“避免入黑坑公司宝典”
  15. torch.zeros_like() 和 torch.zeros()的区别
  16. 数据变换,数据规范化的方法之归一化(Min-max规范化)、标准化(Z-score规范化)、小数定标规范化
  17. 解决问题https访问http加载不出图片资源的顺便在给逻辑做个马杀鸡
  18. 计算机二级电子商务考试内容,电子商务师考试内容
  19. FD 之 DingDing直播回放
  20. 《纸牌屋》:大数据只是噱头

热门文章

  1. 前端性能优化-HTTP添加Expires头和Cache-Control
  2. 子元素margin-top影响父标签原因
  3. 点击调用ajax,jQuery ajax在点击时调用,仅工作一次
  4. 产品网络推广方案之网站导航栏如何设置会更利于排名提升?
  5. 网络营销外包——网络营销外包专员浅析网站首页设计需要注意哪些
  6. 网站SEO中内页标签该如何进行优化?
  7. jmeter定时器的使用_jmeter压测学习30定时器之固定定时器(sleep等待时间)
  8. python椭圆函数_python数字图像处理(16):霍夫圆和椭圆变换
  9. 电脑能连蓝牙耳机吗_安卓手机延迟最低的蓝牙耳机有吗?超低延迟蓝牙耳机推荐...
  10. python简单入门_Python简明入门教程