zoukankan      html  css  js  c++  java
  • 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);
            
        }
  • 相关阅读:
    typeid抛出异常的解释
    [原创]公平数的解法
    [原创]我的北大ACM POJ 1012解答
    [原创]我的PKU ACM POJ1029题解
    asp.net 单用户登录经典解决方案
    [转]SQL事务回滚的问题及其解决的方法
    获取json数据
    js中Date对象的用法
    解决刷新后回到顶部的问题
    C#获取客户端及服务器端主机信息
  • 原文地址:https://www.cnblogs.com/laopo/p/5770475.html
Copyright © 2011-2022 走看看