android studio BindService

article/2025/10/1 7:27:51

一.输入:

1.全部代码:

主界面代码:

public class BindServiceActivity extends AppCompatActivity implements View.OnClickListener {private static final String TAG = "BindServiceActivity";private Button mBtBindService;private Button mBtnUnbindService;MyBindService myBindService;boolean isBind=false;ServiceConnection coon = new ServiceConnection() {@Overridepublic void onServiceConnected(ComponentName name, IBinder service) {//绑定服务的时候偶触发Log.d(TAG, "onServiceConnected: ");MyBindService.MyBinder myBinder = (MyBindService.MyBinder) service;myBindService = myBinder.getService();isBind=true;}@Overridepublic void onServiceDisconnected(ComponentName name) {Log.d(TAG, "onServiceDisconnected: ");//解绑的时候触发}};private Button mBtGetData;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_bind_service);initView();}private void initView() {mBtBindService = (Button) findViewById(R.id.bt_bind_service);mBtnUnbindService = (Button) findViewById(R.id.btn_unbind_service);mBtBindService.setOnClickListener(this);mBtnUnbindService.setOnClickListener(this);mBtGetData = (Button) findViewById(R.id.bt_get_data);mBtGetData.setOnClickListener(this);}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.bt_bind_service:Intent intent = new Intent(BindServiceActivity.this, MyBindService.class);bindService(intent, coon, Context.BIND_AUTO_CREATE);break;case R.id.btn_unbind_service:if (isBind){unbindService(coon);isBind=false;}break;case R.id.bt_get_data:Toast.makeText(myBindService, "随机数为:"+myBindService.getValues(), Toast.LENGTH_SHORT).show();break;}}
}

服务代码:

public class MyBindService extends Service {private static final String TAG = "MyBindService";private IBinder iBinder;private Random mRandom;public MyBindService() {}public class MyBinder extends Binder{MyBindService getService(){return MyBindService.this;}}@Overridepublic IBinder onBind(Intent intent) {Log.d(TAG, "onBind: ");// TODO: Return the communication channel to the service.
//        throw new UnsupportedOperationException("Not yet implemented");return iBinder;}@Overridepublic void onCreate() {super.onCreate();Log.d(TAG, "onCreate: ");iBinder = new MyBinder();mRandom = new Random();}@Overridepublic void onDestroy() {super.onDestroy();Log.d(TAG, "onDestroy: ");}@Overridepublic boolean onUnbind(Intent intent) {Log.d(TAG, "onUnbind: ");return super.onUnbind(intent);}@Overridepublic void onRebind(Intent intent) {super.onRebind(intent);Log.d(TAG, "onRebind: ");}public int getValues(){return mRandom.nextInt(100);}
}

声明:

serviceandroid:name=".MyBindService"android:enabled="true"android:exported="true"></service>

xml代码

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".BindServiceActivity"><Buttonandroid:id="@+id/bt_bind_service"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="绑定服务"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" /><Buttonandroid:id="@+id/btn_unbind_service"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="8dp"android:text="解绑服务"app:layout_constraintEnd_toEndOf="@+id/bt_bind_service"app:layout_constraintStart_toStartOf="@+id/bt_bind_service"app:layout_constraintTop_toBottomOf="@+id/bt_bind_service" /><Buttonandroid:id="@+id/bt_get_data"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="8dp"android:text="get data"app:layout_constraintEnd_toEndOf="@+id/btn_unbind_service"app:layout_constraintStart_toStartOf="@+id/btn_unbind_service"app:layout_constraintTop_toBottomOf="@+id/btn_unbind_service" /></androidx.constraintlayout.widget.ConstraintLayout>

2.步骤:

1.创建绑定服务

  1. 在这里插入图片描述
  2. 在这里插入图片描述
    实现这些方法:onCreate,onBind,onUnbind,onDestroy
    这个方法中要返回一个IBinder
    在这里插入图片描述
    我们创建一个类继承自Binder(他实现接口是IBinder)
public class MyBinder extends Binder{MyBindService getService(){return MyBindService.this;//获取自己}}

初始化我们创建的类,并设置为成员变量

@Overridepublic void onCreate() {super.onCreate();Log.d(TAG, "onCreate: ");iBinder = new MyBinder();mRandom = new Random();}
private IBinder iBinder;

2. 绑定服务

Intent intent = new Intent(BindServiceActivity.this, MyBindService.class);bindService(intent, coon, Context.BIND_AUTO_CREATE);//绑定服务(参数:intent,绑定监听,常量)

创建绑定监听coon

/*** 服务绑定连接监听*/ServiceConnection coon = new ServiceConnection() {@Overridepublic void onServiceConnected(ComponentName name, IBinder service) {//绑定连接触发Log.d(TAG, "onServiceConnected: ");MyBindService.MyBinder myBinder = (MyBindService.MyBinder) service;myBindService = myBinder.getService();isBind=true;}@Overridepublic void onServiceDisconnected(ComponentName name) {//绑定不连接触发Log.d(TAG, "onServiceDisconnected: ");}};

3.取消服务:

if (isBind){//没绑定的话取消会报错unbindService(coon);//取消服务isBind=false;}

4.生命周期

在这里插入图片描述
流程图
在这里插入图片描述

二.输出:


http://chatgpt.dhexx.cn/article/856top2Q.shtml

相关文章

Service中bindService

最近有用到Activity需要不断的从Service中获取数据&#xff0c;第一个想法肯定就是通过bind回调机制了&#xff0c;有几点概念模糊特此记录下&#xff1a; 单独使用bindService()&#xff0c;unbindService()会经历&#xff1a;->onCreate()->onBind()->Service runn…

bindService不调用onServiceConnected的问题

bindService不调用onServiceConnected的问题 昨天做一个项目时&#xff0c;Activity需要bindService获取到service实例与service进行交互&#xff0c;创建好service如下&#xff08;例&#xff09;&#xff1a; class MyService{private IBinder mBinder new MyServicerBind…

bind服务

一、域名 www.baidu.com www.baidu.com. &#xff08;.&#xff09;根域 &#xff08;com&#xff09;一级域名 &#xff08;baidu&#xff09;二级域名 二、DNS解析记录分类 A记录、CNAME、MX记录、NS记录 1、A记录 通过域名直接查询到IP 例如&…

bindService启动流程

通过bindService启动的Service,会执行Service的onCreate、onBind、onUnbind、onDestroy方法&#xff0c;可以通过onBind方法返回的Binder对象和调用端进行通信&#xff0c;并且Service的生命周期和调用端同步。 如下是启动bindService的代码 var stu: Student? null val con…

AIDL报错,bindService一直连接不上、不起作用。

先说问题&#xff0c;最近用aidl&#xff0c;发现bindService根本就不走&#xff0c;不知道咋回事&#xff0c;明明写的没有任何毛病啊&#xff1f; //aidl绑定private void bind() {Intent intent new Intent();String pkg "com.example.mzz_service";//需要调用…

服务两种启动方式(startService与bindService)的区别

综上两篇文章 1.Android Service的基本用法&#xff08;startService启动方式生命周期&#xff09; 2.Android Service与Activity之间的通信&#xff08;bindService启动方式&#xff09; 区别如下&#xff1a; 一.生命周期上的区别 startService启动服务&#xff1a;Service会…

进程间通讯:Binder:bindService之 onServiceConnected回调

1&#xff1a;bindService官方概述 很明显 通过Google官方文档描述&#xff0c;我们知道 1&#xff1a;bindService&#xff08;&#xff09;的返回值只是表明服务是否存在&#xff1b; 2&#xff1a;真正能代表是否成功绑定服务的是触发onServiceConnected&#xff08;&…

Android入门第41天-Android中的Service(bindService)

介绍 在前一天我们介绍了Android中有两种启动Service的方法。并擅述了startService和bindService的区别。同时我们着重讲了startService。 因此今天我们就来讲bindService。bindService大家可以认为它是和Android的一个共生体。即这个service所属的activity如果消亡那么bindS…

Android Binder框架实现之bindService详解

Android Binder框架实现之bindService详解 Android Binder框架实现目录&#xff1a; Android Binder框架实现之Binder的设计思想 Android Binder框架实现之何为匿名/实名Binder Android Binder框架实现之Binder中的数据结构 Android Binder框架实现之Binder相关的接口和类 Andr…

Android bindService流程

一. 前言 我们可以通过startService来启动一个服务, 当然也可以通过bindService绑定一个服务,本篇文章我们来讲一讲绑定服务的完整流程, 阅读此文之前,建议先阅读一下笔者的这三篇文章 Android 进程间通信机制(三) 系统进程与应用进程通信 Android 进程间通信机制(四) 应用进程…

bind服务程序

一、介绍 1、bind服务是全球范围内使用最广泛、最安全可靠且高效的域名解析服务程序。 2、为了有效地限制bind服务程序仅能对自身的配置文件进行操作&#xff0c;以确保整个服务器的安全&#xff0c;在安装部署bind服务程序时加上chroot&#xff08;俗称牢笼机制&#xff09;…

startService bindService 区别

Android执行Service有两种方法&#xff0c;一种是startService&#xff0c;一种是bindService。下面让我们一起来聊一聊这两种执行Service方法的区别。 1、生命周期上的区别 执行startService时&#xff0c;Service会经历onCreate->onStartCommand。当执行stopService时&…

Android中Service使用bindService

前面已经对Service的startServer方式启动一个服务了解过了&#xff0c;现在来看一下Service的另一种启动方式→bindServer bindServer使用场景 1、在同个app之间调用&#xff08;即是同一个进程中&#xff09; 2、在不同app之间调用&#xff08;即是跨进程间通信&#xff09…

Android——bindService()方法启动服务

通过绑定服务来启动的话需要注意创建一个类来实现ServiceConnection接口&#xff0c;重写onServiceConnected&#xff08;&#xff09;和onServiceDisconnected&#xff08;&#xff09;方法。这个类用于服务的连接。成功绑定服务时&#xff0c;会调用onServiceConnected&#…

Android Service 服务(三)—— bindService与remoteService

一、bindService简介 bindService是绑定Service服务&#xff0c;执行service服务中的逻辑流程。 service通过Context.startService()方法开始&#xff0c;通过Context.stopService()方法停止&#xff1b;也可以通过Service.stopSelf()方法或者Service.stopSelfResult()方法来停…

SO_BINDTODEVICE 使用

就绑定到了接口"lmi40"上,所有数据报的收发都只经过这个网卡. 对于SOL_BINDTODEVICE的总结如下: &#xff08;1&#xff09; 对于TCP套接口、UDP套接口、RAW套接口&#xff0c;可以通过SO_BINDTODEVICE套接口选项将套接口绑定到指定的网络接口上。绑定之后&…

startService与bindService的区别

Android执行Service有两种方法&#xff0c;一种是startService&#xff0c;一种是bindService。下面让我们一起来聊一聊这两种执行Service方法的区别。 1、生命周期上的区别 执行startService时&#xff0c;Service会经历onCreate->onStartCommand。当执行stopService时&…

startService和bindService的区别

首先看下其生命周期的区别&#xff1a; 生命周期&#xff1a; onCreate → startCommand → onDestroy onCreate → onBind→onUnBind→ onDestroy 静态绑定对应着startService&#xff1b;动态绑定对应着bindService&#xff0c;静态有自己独立的生命周期&#xff0c;动态会…

bindService的使用

bindService与starService之间的区别&#xff1a; 在程序通过startService&#xff08;&#xff09;方法启动的服务&#xff0c;会长期在后台运行&#xff0c;并且启动服务的组件与服务之间没有关系&#xff0c;即使启动服务的组件被销毁&#xff0c;服务还是会运行。 但是当一…

Service学习以及BindService的使用

Service 什么是Service Service是一个可以在后台执行长时间操作而不使用用户界面的应用组件。 如何使用Service 我们首先需要实现一个Service的子类。主要实现Service的onCreat&#xff08;&#xff09;&#xff0c;onStartCommand&#xff08;&#xff09;&#xff0c;onB…