Android BinderService 过程

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

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
22 //step:2 difine MyBinder and extends
23   class MyBinder  extends Binder
24   {
25        //调用其他的服务 

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

26      public String helloWorld(String name)
27      {
28         return "You name is :"+name;
29     }
30   }
31    //添加其他的服务    public void helloservice() 

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

            {
              e.printStackTrace();
            }
      }
    }

    

  

32   //step:4 retrue mBinder Exposed interface
33     @Override
34     public IBinder onBind(Intent intent) {
35
36         return mBinder;
37
38     }
39
40
41 }

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);

      ((MyBinder)service).getService().helloservice();//绑定其他服务
56     }
57 };
58
59
60
61
62 }

取消绑定

客户端

   Button mUnBinderServiceButton;

    //取消绑定
        mUnBinderServiceButton=(Button) findViewById(R.id.btn_UnBinderService);
        mUnBinderServiceButton.setOnClickListener(new  OnClickListener()
        {

            @Override
            public void onClick(View v)
            {
             unbindService(conn);

            }
        });

服务端端

    @Override
    public boolean onUnbind(Intent intent) {

        // TODO Auto-generated method stub
        return super.onUnbind(intent);

    }
时间: 2024-11-08 22:48:14

Android BinderService 过程的相关文章

Android启动过程

Android启动过程 1.  加载Linux内核 2. Android init进程对各种设备进行初始化,运行Android Framework所需用的各种Daemon(后台进程/守护进程),Context Manager,MediaServer,Zygote等 以下是init进程执行的Daemon进程: USB Daemon(usbd): 管理USB连接 Android Debug Bridge Daemon(adbd): Android  Debug Bridge连接管理 Debugger

Android系统启动过程全解析

Android系统是一款基于Linux的移动操作系统,那么Android是如何启动起来的呢?本文就详细阐述Android系统的启动过程. 从内核之上,我们首先应该从文件系统的init开始,因为 init 是内核进入文件系统后第一个运行的程序,通常我们可以在linux的命令行中指定内核第一个调用谁,如果没指定那么内核将会到/sbin/./bin/ 等目录下查找默认的init,如果没有找到那么就报告出错. init.c位置:system/core/init/init.c. 在init.c的main函

Android系统启动过程

Android系统启动过程 首先Android框架架构图:(来自网上,我觉得这张图看起来很清晰) Linux内核启动之后就到Android Init进程,进而启动Android相关的服务和应用. 启动的过程如下图所示:(图片来自网上,后面有地址)   下面将从Android4.0源码中,和网络达人对此的总结中,对此过程加以学习了解和总结, 以下学习过程中代码片段中均有省略不完整,请参照源码. 一 Init进程的启动 init进程,它是一个由内核启动的用户级进程.内核自行启动(已经被载入内存,开始

拇指接龙游戏从WIN32向Android移植过程问题记录(2)

本文中,在前文(1)基础上,将尽可能详细记录拇指接龙游戏从WIN32向Android移植过程后期--UI运行级调试出现的问题及可能的解决办法. 问题1 正未运行,问题就来了.忽然发现,工程左上角挂着一个大大的感叹号!请看截图: 打开工程属性对话框,观察到如下现象: 我把鼠标停留在右边的横线处,后面出现一个关键单词missing.也就是说,我们的游戏工程依赖的cocos2d-x库包jar文件丢失了!? 再打开另一处观察,发现如下: 其实,有一个重要细节在上一篇中我没有交待.此前,我使用中家的版本在

Android开机过程

韩梦飞沙  韩亚飞  [email protected]  yue31313  han_meng_fei_sha Android开机过程 BootLoder引导,然后加载Linux内核. 0号进程init启动.加载init.rc配置文件,配置文件有个命令启动了zygote进程 zygote开始fork出SystemServer进程 SystemServer加载各种JNI库,然后init1,init2方法,init2方法中开启了新线程ServerThread. 在SystemServer中会创建一

Android 系统启动过程简单记录

本文记录Android系统启动过程,包含从linux kernerl到luancher启动完成的过程: 1.linux内核完成系统设置后,会在系统文件中寻找'init'文件,然后启动root进程或者说系统的第一个进程: 2.init进程是linux内核完成系统设置之后启动的第一个进程或者说root进程,它也是其他所有进程的父进程,其有两个作用,一个是挂载目录,比如/sys,/dev等,二是运行init.rc脚本或init.xxx.rc脚本: 3.Init.rc脚本是Android自己规定的初始化

Android启动过程深入解析

Android启动过程深入解析 2014/06/20 分享到:7 本文由 伯乐在线 - 云海之巅 翻译.未经许可,禁止转载!英文出处:kpbird.欢迎加入翻译小组. 当按下Android设备电源键时究竟发生了什么? Android的启动过程是怎么样的? 什么是Linux内核? 桌面系统linux内核与Android系统linux内核有什么区别? 什么是引导装载程序? 什么是Zygote? 什么是X86以及ARM linux? 什么是init.rc? 什么是系统服务? 当我们想到Android启

拇指接龙游戏从WIN32向Android移植过程问题记录

本文将较细致地记录下最近开发课程中的示例游戏-拇指接龙游戏在从WIN32向Android移植过程中遇到的若干问题及相应解决办法. 目前极不完整,待进一步整理. 问题1 连接真机测试运行时,在SplashScreen运行时便出现如下错误提示(log.txt): 09-16 13:28:16.525: I/GLThread(25784): sending render notification tid=1009-16 13:28:18.530: D/cocos2d-x debug info(2578

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

作为重量级的跨平台开发的游戏引擎,Cocos2d-x在现今的手游开发领域占有重要地位.那么问题来了,作为Cocos2dx的学习者,它的可移植特性我们就需要掌握,要不然总觉得少一门技能.然而这个时候各种各样的问题也就来了,之前网上一直有零零碎碎的移植教程,但是都不完整,或是有这样或者那样的问题.今天刚刚研究成功了Cocos2dx-3.0版本项目的安卓平台移植问题,本人亲自完成了整个过程,将Cocos2dx-3.0版本 从开发环境搭建(Win32)到项目移植Android平台过程 一起分享给大家.