步骤:建立服务器端服务,暴露接口

1.BinderService

  1. /**
  2. * @Title BinderService.java
  3. * @package cn.boxai.binderservice
  4. * @since
  5. * @version 1.0.0
  6. * @author Vic Lee
  7. * @date Aug 14, 2016-3:50:04 PM
  8. */
  9. package cn.boxai.binderservice;
  10.  
  11. import android.app.Service;
  12. import android.content.Intent;
  13. import android.os.Binder;
  14. import android.os.IBinder;
  15.  
  16. public class BinderService extends Service {
  17.  
  18. //step:1 difind mBinder
  19. IBinder mBinder=new MyBinder(); //step:3 implements mBinder
  20.  
  21. //step:2 difine MyBinder and extends
  22. class MyBinder extends Binder
  23. {

  24.   //调用其他的服务 

public BinderService getService()
       {
        return BinderService.this;
       }

  1. public String helloWorld(String name)
  2. {
  3. return "You name is :"+name;
  4. }
  5. }
  6. 31
        //添加其他的服务
        public void helloservice()

    {
      for (int i = 0; i < 100; i++)
      {
        try {
          Thread.sleep(1000);
          Log.i("helloservice", i+"");
          } catch (InterruptedException e)

            {
              e.printStackTrace();
            }
      }
    }

  1.   

  

  1. //step:4 retrue mBinder Exposed interface
  2. @Override
  3. public IBinder onBind(Intent intent) {
  4.  
  5. return mBinder;
  6.  
  7. }
  8.  
  9. }

2.客户端

  1. package cn.boxai.binderservice;
  2.  
  3. import cn.boxai.binderservice.BinderService.MyBinder;
  4. import android.os.Bundle;
  5. import android.os.IBinder;
  6. import android.app.Activity;
  7. import android.content.ComponentName;
  8. import android.content.Intent;
  9. import android.content.ServiceConnection;
  10. import android.util.Log;
  11. import android.view.Menu;
  12. import android.view.View;
  13. import android.view.View.OnClickListener;
  14. import android.widget.Button;
  15. import android.widget.Toast;
  16.  
  17. public class BinderServiceActivity extends Activity {
  18. Button mBinderServiceButton;
  19. @Override
  20. protected void onCreate(Bundle savedInstanceState) {
  21. super.onCreate(savedInstanceState);
  22. setContentView(R.layout.activity_main);
  23. mBinderServiceButton=(Button) findViewById(R.id.btn_BinderService);
  24. mBinderServiceButton.setOnClickListener(new OnClickListener()
  25. {
  26.  
  27. @Override
  28. public void onClick(View v)
  29. {
  30. // step 5:call interface from server
  31. //bindService parameter=>_intent
  32. Intent _intent=new Intent(BinderServiceActivity.this,BinderService.class);
  33. bindService(_intent, conn, BinderService.BIND_AUTO_CREATE);
  34. }
  35. });
  36.  
  37. }
  38. //step 6:bindService parameter=>conn
  39. private ServiceConnection conn=new ServiceConnection()
  40. {
  41.  
  42. @Override
  43. public void onServiceDisconnected(ComponentName name) {
  44.  
  45. // TODO Auto-generated method stub
  46.  
  47. }
  48.  
  49. @Override
  50. public void onServiceConnected(ComponentName name, IBinder service) {
  51.  
  52. //step 7:receive server method
  53. String bindername=((MyBinder)service).helloWorld("LD");
  54. Toast.makeText(BinderServiceActivity.this, bindername, 3000).show();
  55. Log.i("BinderService", "BinderService==>"+bindername);
  56.  
  57.       ((MyBinder)service).getService().helloservice();//绑定其他服务
  58. }
  59. };
  60.  
  61. }

取消绑定

客户端

  1. Button mUnBinderServiceButton;
  2.  
  3. //取消绑定
  4. mUnBinderServiceButton=(Button) findViewById(R.id.btn_UnBinderService);
  5. mUnBinderServiceButton.setOnClickListener(new OnClickListener()
  6. {
  7.  
  8. @Override
  9. public void onClick(View v)
  10. {
  11. unbindService(conn);
  12.  
  13. }
  14. });

服务端端

  1. @Override
  2. public boolean onUnbind(Intent intent) {
  3.  
  4. // TODO Auto-generated method stub
  5. return super.onUnbind(intent);
  6.  
  7. }

Android BinderService 过程的更多相关文章

  1. Cocos2dx-3.0版本 从开发环境搭建(Win32)到项目移植Android平台过程详解

    作为重量级的跨平台开发的游戏引擎,Cocos2d-x在现今的手游开发领域占有重要地位.那么问题来了,作为Cocos2dx的学习者,它的可移植特性我们就需要掌握,要不然总觉得少一门技能.然而这个时候各种 ...

  2. Android系统启动过程-uBoot+Kernel+Android

    摘要:本文是参考大量网上资源在结合自己查看源代码总结出来的,让自己同时也让大家加深对Android系统启动过程有一个更加深入的了解!再次强调,本文的大多数功劳应归功于那些原创者们,同时一些必要的参考链 ...

  3. Android 核心分析 之八Android 启动过程详解

    Android 启动过程详解 Android从Linux系统启动有4个步骤: (1) init进程启动 (2) Native服务启动 (3) System Server,Android服务启动 (4) ...

  4. Android启动过程以及各个镜像的关系

    Android启动过程 Android在启动的时候,会由UBOOT传入一个init参数,这个init参数指定了开机的时候第一个运行的程序,默认就是init程序,这个程序在ramdisk.img中.可以 ...

  5. Android编译过程详解(一)

    Android编译过程详解(一) 注:本文转载自Android编译过程详解(一):http://www.cnblogs.com/mr-raptor/archive/2012/06/07/2540359 ...

  6. Android(java)学习笔记162:Android启动过程(转载)

    转载路径为: http://blog.jobbole.com/67931/ 1. 关于Android启动过程的问题: 当按下Android设备电源键时究竟发生了什么? Android的启动过程是怎么样 ...

  7. Android 安装过程中的问题

    Android  安装过程中的问题 上一篇我说到配置android环境,但是在具体的安装过程中,因为下载的软件或者方法不同,导致没有正确的结果,如果有一些错误的时候,可以试一试关闭eclipse软件, ...

  8. Android 系统启动过程简单记录

    本文记录Android系统启动过程,包含从linux kernerl到luancher启动完成的过程: 1.linux内核完成系统设置后,会在系统文件中寻找‘init’文件,然后启动root进程或者说 ...

  9. Android 深入浅出 - Android系统启动过程

    Activity的类继承关系及跟踪Activity的启动 Android系统启动过程 https://study.163.com/course/courseLearn.htm?courseId=213 ...

随机推荐

  1. ipxe引导远程的windows

    使用ipxe解决本地引导远程系统 本地安装的centos7,然后修改grub.cfg来使用ipxe技术引导远程windows,实现双系统 os-->centos7 修改grub.cfg 在文件最 ...

  2. Nginx 安装

    1 编译环境 yum -y groupinstall "Development Tools" "Server Platform Development"   2 ...

  3. javascript中的对象,原型,原型链和面向对象

    一.javascript中的属性.方法 1.首先,关于javascript中的函数/“方法”,说明两点: 1)如果访问的对象属性是一个函数,有些开发者容易认为该函数属于这个对象,因此把“属性访问”叫做 ...

  4. NOI 05:最高的分数描述

    描述 孙老师讲授的<计算概论>这门课期中考试刚刚结束,他想知道考试中取得的最高分数.因为人数比较多,他觉得这件事情交给计算机来做比较方便.你能帮孙老师解决这个问题吗? 输入输入两行,第一行 ...

  5. 在Sublime中编辑批处理并运行

    在Sublime->Tool->Build System -> New Build System 复制如下代码名保存为 CMD.sublime-build { "cmd&q ...

  6. android nfc中Ndef格式的读写

    1. 在onCreate()中获取NfcAdapter对象: NfcAdapter nfcAdapter = NfcAdapter.getDefaultAdapter(this); 2.在onNewI ...

  7. 跨列设置column-span

    column-span主要用来定义一个分列元素中的子元素能跨列多少.column-width.column-count等属性能让一元素分成多列,不管里面元素如何排放顺序,他们都是从左向右的放置内容,但 ...

  8. Lunix 命令

    awk '{a[$1]+=1;if(a[$1]==1){print $0}}' awk -F ','  '{print $1, $6}'  IS.csv | sort -k1n -k2n | awk ...

  9. DLL注入

    最近的项目涉及了软件破解方面的知识,记录一下. 将dll注入另一个进程. // Inject.cpp : Defines the exported functions for the DLL appl ...

  10. C# WinForm开发系列 - DataGridView

    1.DataGridView实现课程表 testcontrol.rar 2.DataGridView二维表头及单元格合并 DataGridView单元格合并和二维表头.rar myMultiColHe ...