绑定服务:调用远程服务中的方法 |
音乐播放器 应用: 音乐后台长期播放. service. 绑定本地服务.
支付宝暴露一个支付的服务. 运行在支付宝安全支付的应用程序里面.
其他应用程序 进行支付, 找到激活支付宝的服务. 调用支付宝里面支付的方法.
绑定远程服务.
aidl: android interface definition language
安卓接口定义语言:
作用 让不同的应用程序 不同的进程之间可以沟通交流
IPC: inter process communication 进程间通讯
绑定远程服务和本地服务的区别:
1. 本地服务 直接定义IService.java的接口
远程服务 定义一个 IService.adil文件 更改扩展名 删除public
2. 本地服务 extend Binder implement IServcie
远程服务 extend IService.Stub
3. 本地服务 绑定成功 直接强制类型转换 IServcie
远程服务 绑定成功 IService.Stub.asInterface(service)
支付宝暴露一个支付的服务. 运行在支付宝安全支付的应用程序里面.
其他应用程序 进行支付, 找到激活支付宝的服务. 调用支付宝里面支付的方法.
绑定远程服务.
aidl: android interface definition language
安卓接口定义语言:
作用 让不同的应用程序 不同的进程之间可以沟通交流
IPC: inter process communication 进程间通讯
绑定远程服务和本地服务的区别:
1. 本地服务 直接定义IService.java的接口
远程服务 定义一个 IService.adil文件 更改扩展名 删除public
2. 本地服务 extend Binder implement IServcie
远程服务 extend IService.Stub
3. 本地服务 绑定成功 直接强制类型转换 IServcie
远程服务 绑定成功 IService.Stub.asInterface(service)
-----------------------------------------------------------------------------------------------
public
class
MainActivity
extends
Activity {
private
ServiceConnection
conn
;
private
IService
iservice
;
@Override
protected
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.
activity_main
);
}
/**
* 绑定服务
*
@param
view
*/
public
void
onbind(View view){
//创建隐式意图
Intent intent=
new
Intent();
intent.setAction(
"com.itheima.givemoney"
);
conn
=
new
MyConn();
bindService(intent,
conn
,
BIND_AUTO_CREATE
);
}
//创建一个类实现ServiceConnection接口
private
class
MyConn
implements
ServiceConnection{
//接收返回服务代理人
@Override
public
void
onServiceConnected(ComponentName name, IBinder service) {
iservice
=IService.Stub. asInterface(service);
System.
out
.println(
"接收到了服务代理人......"
);
}
@Override
public
void
onServiceDisconnected(ComponentName name) {
}
}
/**
* 调用服务内方法
*
*/
public
void
dopay(View view){
try
{
iservice
.pay(
"张三"
,
"1234"
, 10000);
}
catch
(RemoteException e) {
e.printStackTrace();
}
}
/**
* activity销毁的时候解除绑定
*/
@Override
protected
void
onDestroy() {
super
.onDestroy();
if
(
conn
!=
null
){
unbindService(
conn
);
//解除绑定
conn
=
null
;
}
}
}