andorid,绑定服务,调用服务的方法
来源:互联网 发布:海信电视怎么安装软件 编辑:程序博客网 时间:2024/04/30 17:29
调用服务类方法的流程。
1,绑定服务,绑定成功输出信息。
2: 服务在成功绑定的时候 会调用onbind方法 返回一个ibinder对象.
3: 服务返回的ibinder对象 会被传递给MyConn implements ServiceConnection的回调方法。
4: 在activity里面得到服务 ibinder对象的引用.
5: 利用ibinder 对象 间接的调用了服务里面的方法
public class MainActivity extends Activity {//步骤4: 在activity里面得到服务 ibinder对象的引用.private IService myBinder;private MyConn conn;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}/** * 开启服务 * * @param view */public void start(View view) {Intent intent = new Intent(this, CungeService.class);// 采用api 创建 服务 ,服务对象是被系统(框架 )new 出来startService(intent);}/** * 停止服务 */public void stop(View view) {Intent intent = new Intent(this, CungeService.class);stopService(intent);}public void bind(View view){Intent intent = new Intent(this, CungeService.class);//intent 激活服务的意图// conn 代理人 中间人对象 用来跟服务建立联系 不能为空// BIND_AUTO_CREATE 在绑定服务的时候 如果服务不存在 就自动的创建//步骤1: 采用绑定服务的方式 开启服务conn = new MyConn();bindService(intent,conn , BIND_AUTO_CREATE);}//接触绑定服务的方法public void unbind(View view){unbindService(conn);}@Overrideprotected void onDestroy() {try{unbindService(conn);}catch (Exception e) {}super.onDestroy();}private class MyConn implements ServiceConnection{// 在服务被成功绑定的时候 调用的方法@Overridepublic void onServiceConnected(ComponentName name, IBinder service) {System.out.println("春哥把代理人返回回来了...");//步骤3: 服务返回的ibinder对象 会被传递给 MyConn 的回调方法System.out.println(service);myBinder = (IService) service;}// 在服务失去绑定的时候 调用的方法 只有程序异常 终止,@Overridepublic void onServiceDisconnected(ComponentName name) {}}/** * 调用服务里面的方法 ,换首歌 */public void change(View view) {// 由于系统框架在创建服务的时候 会创建与之对应的上下文,// 下面的代码 是直接new对象 .// CungeService service = new CungeService();// service.changeSing("月亮之上");//步骤5: 利用ibinder 对象 间接的调用了服务里面的方法myBinder.callChangeSing("月亮之上");}}
创建一个服务类,含有一个准备被外界调用的方法。
MyBinder类,用于调用服务类的方法
/** * 在后台长期运行的组件 唱歌 * @author Administrator * */public class CungeService extends Service {@Overridepublic IBinder onBind(Intent intent) {System.out.println(" onBind 春哥服务被成功的绑定了....");//步骤2: 服务在成功绑定的时候 会调用onbind方法 返回一个ibinder对象.//返回自定义的代理人对象MyBinder mybinder = new MyBinder();System.out.println(mybinder.toString());return mybinder;}private class MyBinder extends Binder implements IService{//间接的利用代理人 调用了春哥的方法public void callChangeSing(String name){changeSing(name);}public void peiCungeWatchTV(){}public void peiCungeCountMoney(){}}@Overridepublic void onCreate() {super.onCreate();System.out.println("onCreate 服务开始了 ,春哥 开始唱歌");}/** * 更改唱的歌曲 * @param singName */public void changeSing(String singName){Toast.makeText(getApplicationContext(), "开始唱"+singName, 0).show();}@Overridepublic boolean onUnbind(Intent intent) {System.out.println("onunbind");return super.onUnbind(intent);}@Overridepublic void onDestroy() {super.onDestroy();System.out.println("onDestroy 服务销毁了 ,春哥停止唱歌");}}MyBinder 要实现这个接口。在activity里面得到服务 ibinder对象的引用时,用接口声明就行了.
//春哥代理人的接口public interface IService { public void callChangeSing(String name);}
清单中加入
<service android:name=".CungeService"></service>
0 0
- andorid,绑定服务,调用服务的方法
- 绑定服务&调用服务里面的方法
- 绑定服务:调用服务内部的方法
- Android--绑定服务调用服务的方法
- 绑定服务并调用服务的方法,解除绑定
- 绑定的方式调用服务的方法
- 绑定服务调用方法的回顾
- android,aidl,绑定远程服务,调用远程服务的方法
- android之绑定服务调用服务的方法
- Android绑定方式开始服务&调用服务当中的方法
- Android启动服务和绑定服务的方法调用
- 绑定服务:调用远程服务中的方法
- 绑定服务并调用服务中的方法
- 绑定服务调用本地服务中的方法
- 绑定服务调用远程服务中的方法
- activity以绑定服务的方式开启服务并调用服务里面的方法
- android 服务的绑定调用
- 绑定和解除绑定远程服务并调用远程服务的方法
- 验证码图片
- 二叉查找树——Validate Binary Search Tree
- Java ServletContext 详解
- 心态才是最重要的
- STM32单片机学习——使用外设库的一些问题
- andorid,绑定服务,调用服务的方法
- Matlab---size,length和numel函数
- 【由一行平常代码想到的】
- 用CSS定义每段首行缩进2个字符
- 花样滑冰表演滑 金妍儿蔚蓝裙摆宛如冰上精灵
- linux线程编程
- 林心如林志颖汤唯朱雨辰 十大女星“第一次”给了谁
- 题目1201:二叉排序树
- 为什么互联网产品创业成功率不足1%?