黑马程序员安卓教程:绑定服务抽取接口

上传人:mingti****nghao 文档编号:40950423 上传时间:2018-05-27 格式:DOCX 页数:4 大小:596.25KB
返回 下载 相关 举报
黑马程序员安卓教程:绑定服务抽取接口_第1页
第1页 / 共4页
黑马程序员安卓教程:绑定服务抽取接口_第2页
第2页 / 共4页
黑马程序员安卓教程:绑定服务抽取接口_第3页
第3页 / 共4页
黑马程序员安卓教程:绑定服务抽取接口_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《黑马程序员安卓教程:绑定服务抽取接口》由会员分享,可在线阅读,更多相关《黑马程序员安卓教程:绑定服务抽取接口(4页珍藏版)》请在金锄头文库上搜索。

1、绑定服务抽取接口绑定服务抽取接口在“调用服务内部方法的过程”项目中,我们在服务类中定义了内部类 MyBinder 为一个中间人,然 后通过该中间人来调用服务内部的方法。这种方式虽然可行,但是也存在着漏洞。假设该内部类中有多 个内部方法,而这些内部方法是不允许被其他 Activity 访问的。 调整内部类 MyBinder,代码如例 1-1 所示: 例 1-1public class MyBinder extends Binderpublic void callMethodInService(int money) if(money2000)methodInService();elseToast.

2、makeText(LingdaoService.this, “太少啦,你懂的“, 0).show();public void playMajiang()Toast.makeText(LingdaoService.this, “领导,东风,二饼,自摸,糊了“, 1).show();public void 洗桑拿()Toast.makeText(LingdaoService.this, “来洗一洗,领导好好洗“, 1).show();由于我们在 Activity 中已经得到了中间人对象 MyBinder,那么我们就可以在 Activity 中随便调用 MyBinder 中的任何方法啦。此时,我们不

3、仅仅可以调用 callMethodInService 方法,还可以调用方法 playMajiang 以及方法洗桑拿。可服务类只允许 Activity 调用 callMethodInService 方法,并不允许 Activity 掉用 playMajiang 方法和洗桑拿方法。为了解决这个问题,我们可以使用接口编程的方法来指定 Activity 可以调用的方法。具体步骤如下: 编写一个接口类 IService,此时工程结构如图 1-1 所示:图 1-1 所示 在接口类中定义一个方法,代码如例 1-2 所示: 例 1-2package com.itheima.callservicemethod;

4、public interface IService /* 声明一个接口,用来暴露一个方法* param money*/public void callMethodInService(int money);调整服务类中的内部类 MyBinder 使之实现 IService 接口,代码如例 1-3 所示: 例 1-3public class MyBinder extends Binder implements IServicepublic void playMajiang()Toast.makeText(LingdaoService.this, “领导,东风,二饼,自摸,糊了“, 1).show(

5、);public void 洗桑拿()Toast.makeText(LingdaoService.this, “来洗一洗,领导好好洗“, 1).show();在内部类 MyBinder 中实现接口 IService 中定义的方法 callMethodInService,代码如例 1-4 所示: 例 1-4public class MyBinder extends Binder implements IServicepublic void callMethodInService(int money) if(money2000)methodInService();elseToast.makeTex

6、t(LingdaoService.this, “太少啦,你懂的太少啦,你懂的“, 0).show();public void playMajiang()Toast.makeText(LingdaoService.this, “领导,东风,二饼,自摸,糊了“, 1).show();public void 洗桑拿()Toast.makeText(LingdaoService.this, “来洗一洗,领导好好洗“, 1).show();在 Activity 中调整 Myconn 代码如例 1-5 所示: 例 1-5private class MyConn implements ServiceConn

7、ection/当服务被绑定Overridepublic void onServiceConnected(ComponentName name, IBinder service) myBinder =(IService) service;System.out.println(“在Activity里面获取到服务成功绑定的中间人“);.例 1-5 可知:当绑定服务成功时调用 onServiceConnected 方法返回一个中间人对象,此时我们将该返 回中间人对象的类型由原来的 MyBinder 类型调整为 IService 类型即将 myBinder =(MyBinder) service 更改 为 myBinder =(IService) service;由于我们在接口类 IService 中只定义 callMethodInService 方法,故 Activity 中通过中间人对象只能调用 callMethodInService 方法,而不能调用 playMajiang 方法和洗桑拿方法。 运行程序,当点击按钮响应 call 方法(传入参数 3000) ,效果如图 1-2 所示:图 1-2 所示

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号