通过bindservice方式调用服务方法里面的过程
为什么要引入bindService:目的为了调用服务里面的方法
(1)定义一个服务 服务里面有一个方法需要Activity调用
(2)定义一个中间人对象(IBinder) 继承Binder
(3)在onbind方法里面把我们定义的中间人对象返回
(4)在Activity的oncreate 方法里面调用bindservice 目的是为来获取我们定义的中间人对象
(4.1)获取中间人对象
(5)拿到中间人对象后就可以间接的调用到服务里面的方法
public class TestService extends Service { //当bindservice
@Override
public IBinder onBind(Intent intent) { //[3]把我们定义的中间人对象返回
return new MyBinder();
} @Override
public void onCreate() {
super.onCreate();
} //测试方法
public void banZheng(int money){ if (money > 1000) {
Toast.makeText(getApplicationContext(), "我是领导 把证给你办了", 1).show();
}else{ Toast.makeText(getApplicationContext(), "这点钱 还想办事", 1).show();
} } //[1定义一个中间人对象 ] public class MyBinder extends Binder{ //[2]定义一个方法 调用办证的方法
public void callBanZheng(int money){
banZheng(money); } } }
public class MainActivity extends Activity { private MyBinder myBinder; //这个是我们定义的中间人对象
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); // //开启服务
Intent intent = new Intent(this,TestService.class);
//连接服务 TestService
MyConn conn = new MyConn();
//绑定服务
bindService(intent, conn, BIND_AUTO_CREATE); } //点击按钮 调用TestService 服务里面的办证方法
public void click(View v) {
//通过我们定义的中间人对象 间接调用服务里面的方法
myBinder.callBanZheng(102); } //监视服务的状态
private class MyConn implements ServiceConnection{ //当连接服务成功后
@Override
public void onServiceConnected(ComponentName name, IBinder service) { //[4]获取我们定义的中间人对象 myBinder = (MyBinder) service;
} //失去连接
@Override
public void onServiceDisconnected(ComponentName name) { } } }
通过bindservice方式调用服务方法里面的过程的更多相关文章
- start方式开启服务的特点&bindService 方式开启服务的特点
服务是在后台运行 可以理解成是没有界面的activity 定义四大组件的方式都是一样的 定义一个类继承Service start方式开启服务的特点 特点: (1)服务通 ...
- YbSoftwareFactory 代码生成插件【二十五】:Razor视图中以全局方式调用后台方法输出页面代码的三种方法
上一篇介绍了 MVC中实现动态自定义路由 的实现,本篇将介绍Razor视图中以全局方式调用后台方法输出页面代码的三种方法. 框架最新的升级实现了一个页面部件功能,其实就是通过后台方法查询数据库内容,把 ...
- Java 调用对象方法的执行过程
弄清调用对象方法的执行过程十分重要.下面是调用过程的详细描述: 1) 编译器查看对象的声明类型和方法名.假设调用x.f(param),且隐式参数x声明为C类的对象.需要注意的是:有可能存在多个名为f, ...
- asp.net 通过ajax方式调用webmethod方法使用自定义类传参及获取返回参数
实体类 public class User { public int Id { get; set; } public string Name { get; se ...
- [android] 代码注册广播接收者&利用广播调用服务的方法
利用广播调用服务里面的方法,间接的方式调用服务内部的方法,与现实中差不多,请媒体曝光 主界面里面 在界面创建的时候开启一下服务普通的startService()方法 发送一条广播出去 获取Intent ...
- SpringCloud Nacos + Ribbon 调用服务的 2 种方法!
在 Nacos 中,服务调用主要是通过 RestTemplate + Ribbon 实现的,RestTemplate 是 Spring 提供的 Restful 请求实现类,而 Ribbon 是客户端负 ...
- WCF 客户端调用服务操作的两种方法
本节的主要内容:1.通过代理类的方式调用服务操作.2.通过通道的方式调用服务操作.3.代码下载 一.通过代理类的方式调用服务操作(两种方式添加代理类) 1.手动编写代理类,如下: 客户端契约: usi ...
- 利用广播调用后台服务方法并根据方法返回的内容更新UI
一.UI布局代码 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns ...
- Angular中怎样创建service服务来实现组件之间调用公共方法
Angular组件之间不能互相调用方法,但是可以通过创建服务来实现公共方法的调用. 实现 创建服务命令 ng g service 服务路径/服务名 比如这里在app/services目录下创建stor ...
随机推荐
- Dapper in .Net Core
一.前言 关于什么是Dapper,在此不做赘述:本文仅对Dapper在.Net Core中的使用作扼要说明,所陈代码以示例讲解为主,乃抛砖引玉,开发者可根据自身需要进行扩展和调整:其中如有疏漏之处,望 ...
- Java基础(八)——IO流2_缓冲流、转换流
一.缓冲流 1.介绍 缓冲流:不能直接作用在文件上,需要包一层,它是一种处理流.用于提高文件的读写效率.它在流的基础上对流的功能进行了增强.提高读写速度的原因:内部提供了一个缓冲区.缺省使用 8192 ...
- python 使用hashlib进行md5加密
使用场景,某个接口或某个场景的数据需要做md5处理,就可以通过hashlib模块进行md5加密,如一个接口,需要传入md5加密后的数据 导入模块 import hashlib def exchange ...
- Java 单引号 与 双引号 区别
双引号,用来引用字符串, 单引号用来表示单个字符.
- SQL高级优化(三)之存储引擎
一.MySQL数据库引擎简介 1. ISAM(indexed Sequential Access Method) ISAM 是一个定义明确且历经时间考验的数据表格管理方法,它在设计之时就考虑到数据 ...
- [学习分享] 在Windows操作系统下如何安装RMySQL包
最近在做股票的高频交易数据分析,需要用到数据库,而我只对MySQL比较熟悉,于是就安装了MySQL.当我安装好了MySQL后,正兴冲冲地准备安装RMySQL包时,问题来了:RMySQL包不支持wind ...
- Solon 开发,八、注入依赖与初始化
Solon 开发 一.注入或手动获取配置 二.注入或手动获取Bean 三.构建一个Bean的三种方式 四.Bean 扫描的三种方式 五.切面与环绕拦截 六.提取Bean的函数进行定制开发 七.自定义注 ...
- [STM32F10x] 使用printf函数进行串口调试问题
硬件:STM32F103C8T6 平台:Keil ARM-MDk V5.11 利用printf函数通过串口(USART)进行调试时遇到的一个问题: printf("Hello, Mini-M ...
- Cesium应用篇--添加雨雪天气
作为一个三维地球,在场景中来点雨雪效果,貌似可以增加一点真实感.Cesium官网Demo中有天气系统的实例,用的是Cesium中的粒子系统做的.效果如下图所示,粒子系统的本质是向场景中添加了很多物体, ...
- golang中int、float、string数据类型之间的转换
package main import ( "fmt" "strconv" ) func main() { var num1 int = 88 var num2 ...