public class MainActivity extends AppCompatActivity {
private MyConn conn;
private Iservice myBinder; // 我定义的中间人对象 @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); Intent intent = new Intent(this, DemoService.class);
//连接服务
conn = new MyConn();
bindService(intent, conn, BIND_AUTO_CREATE);
} //点击按钮调用服务里面banzheng的方法
public void click(View v) {
myBinder.callBanZheng();
} //监视服务的状态
private class MyConn implements ServiceConnection{
//当服务连接成功调用
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
//获取中间人对象
myBinder = (Iservice) service;
}
//失去连接
@Override
public void onServiceDisconnected(ComponentName name) { }
} @Override
protected void onDestroy() {
//当Activity销毁的时候 解绑服务
unbindService(conn);
super.onDestroy();
}
}
public class DemoService extends Service {
private static final String TAG = "jojp";
public DemoService() {
}
// 把我定义的中间人对象返回
@Override
public IBinder onBind(Intent intent) {
// TODO: Return the communication channel to the service.
// throw new UnsupportedOperationException("Not yet implemented");
return new MyBinder();
} //banzheng的方法
public void banZheng(int money) {
if (money > ) {
Toast.makeText(getApplicationContext(), "banZheng", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getApplicationContext(), "banZhengFail", Toast.LENGTH_SHORT).show();
}
} //打麻将的方法
public void playMaJiang() {
Log.d(TAG, "playMaJiang: ");
}
//洗桑拿的方法
public void sangNa() {
Log.d(TAG, "sangNa: ");
} private class MyBinder extends Binder implements Iservice{
@Override
public void callBanZheng(int money) {
//调用banzheng的方法
banZheng(money);
}
public void callPlayMaJiang() {
//调用playMaJiang的方法
playMaJiang();
}
public void callSangNa() {
//调用洗桑拿的方法
sangNa();
}
}
}
public interface Iservice {
//把领导想暴露的方法都定义在接口里
public void callBanZheng(int money);
}

Android 通过接口的方式去调用服务里面的方法的更多相关文章

  1. WCF使用地址去调用服务端的方法

    前面的章节已经讲过了WCF的代码和SVC页面的分离,这里是分离后,客户端调用代码如下: try { var myBinding = new BasicHttpBinding(); var myEndp ...

  2. Android -- service的开启方式, start开启和绑定开启服务,调用服务的的方法, aidl调用远程服务

    1. 概述 bindService() 绑定服务  可以得到服务的代理人对象,间接调用服务里面的方法. 绑定服务: 间接调用服务里面的方法.           如果调用者activity被销毁了, ...

  3. Android(java)学习笔记229:服务(service)之绑定服务调用服务里面的方法 (采用接口隐藏代码内部实现)

    1.接口 接口可以隐藏代码内部的细节,只暴露程序员想暴露的方法 2.利用上面的思想优化之前的案例:服务(service)之绑定服务调用服务里面的方法,如下: (1)这里MainActivity.jav ...

  4. Android(java)学习笔记172:服务(service)之绑定服务调用服务里面的方法 (采用接口隐藏代码内部实现)

    1. 接口 接口可以隐藏代码内部的细节,只暴露程序员想暴露的方法 2. 利用上面的思想优化之前的案例:服务(service)之绑定服务调用服务里面的方法,如下: (1)这里MainActivity.j ...

  5. Android(java)学习笔记228:服务(service)之绑定服务调用服务里面的方法

    1.绑定服务调用服务里面的方法,图解: 步骤: (1)在Activity代码里面绑定 bindService(),以bind的方式开启服务 :                     bindServ ...

  6. Android(java)学习笔记171:服务(service)之绑定服务调用服务里面的方法

    1.绑定服务调用服务里面的方法,图解: 步骤: (1)在Activity代码里面绑定 bindService(),以bind的方式开启服务 :                     bindServ ...

  7. Yii2 提供可以用属性的方式去获取类的一个方法

    刚开始用 Yii 的小朋友可能对下面的写法非常疑惑: public function actionIndex() { $user = User::find()->where(['name'=&g ...

  8. 使用AIDL远程调用服务中的方法

    AIDL:android interface define language(接口定义语言) 作用:方便远程调用其他服务中的方法 注意:安卓四大组件都要在清单文件注册 aidl创建图: AIDL的全称 ...

  9. Webservice客户端动态调用服务端功能方法

    一.发布WebService服务 方式一:在服务端生成wsdl文件,下方客户端直接引用即可     优点:针对要发布的方法生成一个wsdl文件即可,无需多余配置.   缺点:每次服务端方法发生改变都需 ...

随机推荐

  1. Python-5-字符串方法

    center >>> "The Middle by Jimmy Eat World".center(39) '     The Middle by Jimmy E ...

  2. spring读取配置文件,且获取bean实例

    import org.springframework.beans.factory.BeanFactory;import org.springframework.beans.factory.xml.Xm ...

  3. spring boot +Thymeleaf+mybatis 集成通用PageHelper,做分页

    controller: /**  * 分页查询用户  * @param request  * @param response  * @return  * @throws Exception  */ @ ...

  4. element,点击查看,实现tab切换:

    点击查看,实现tab切换: 代码如下: <template> <div> <el-table :data="tableData" style=&quo ...

  5. SprimgMVC学习笔记(二)—— 整合Mybatis

    一.整合思路 1.1 Dao层 SqlMapConfig.xml:空文件即可,但是需要文件头. applicationContext-dao.xml 数据库连接池 SqlSessionFactory对 ...

  6. Mybatis学习笔记(三) —— DAO开发方法

    一.SqlSession的使用范围 SqlSession中封装了对数据库的操作,如:查询.插入.更新.删除等. SqlSession通过SqlSessionFactory创建. SqlSessionF ...

  7. Kibana6.x.x源码分析--启动时basePath

    每次启动Kibana时,发现URL都会随机的生成三位字母,比如:[http://localhost:5601/abc/][http://localhost:5601/dzf/]等等,那么这些随机的字符 ...

  8. Kibana源码启动报错记录--ENOSPC

    执行该命令可解决:echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysc ...

  9. 321B

    MCMF必须是满足流量最大为前提下的最小费用流(这里是最大费用流) 因此还必须不断地枚举m的流量才行 #include<iostream> #include<algorithm> ...

  10. js 数字处理Number()

    //js将数字转换保留2位小数 function toDecimal(x) { var val = Number(x) if (!isNaN(parseFloat(val))) { //toFixed ...