Android BinderService 过程
步骤:建立服务器端服务,暴露接口
1.BinderService
- /**
- * @Title BinderService.java
- * @package cn.boxai.binderservice
- * @since
- * @version 1.0.0
- * @author Vic Lee
- * @date Aug 14, 2016-3:50:04 PM
- */
- package cn.boxai.binderservice;
- import android.app.Service;
- import android.content.Intent;
- import android.os.Binder;
- import android.os.IBinder;
- public class BinderService extends Service {
- //step:1 difind mBinder
- IBinder mBinder=new MyBinder(); //step:3 implements mBinder
- //step:2 difine MyBinder and extends
- class MyBinder extends Binder
- {
//调用其他的服务
public BinderService getService()
{
return BinderService.this;
}
- public String helloWorld(String name)
- {
- return "You name is :"+name;
- }
- }
- 31
//添加其他的服务
public void helloservice()
{
for (int i = 0; i < 100; i++)
{
try {
Thread.sleep(1000);
Log.i("helloservice", i+"");
} catch (InterruptedException e)
{
e.printStackTrace();
}
}
}
- //step:4 retrue mBinder Exposed interface
- @Override
- public IBinder onBind(Intent intent) {
- return mBinder;
- }
- }
2.客户端
- package cn.boxai.binderservice;
- import cn.boxai.binderservice.BinderService.MyBinder;
- import android.os.Bundle;
- import android.os.IBinder;
- import android.app.Activity;
- import android.content.ComponentName;
- import android.content.Intent;
- import android.content.ServiceConnection;
- import android.util.Log;
- import android.view.Menu;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.Button;
- import android.widget.Toast;
- public class BinderServiceActivity extends Activity {
- Button mBinderServiceButton;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- mBinderServiceButton=(Button) findViewById(R.id.btn_BinderService);
- mBinderServiceButton.setOnClickListener(new OnClickListener()
- {
- @Override
- public void onClick(View v)
- {
- // step 5:call interface from server
- //bindService parameter=>_intent
- Intent _intent=new Intent(BinderServiceActivity.this,BinderService.class);
- bindService(_intent, conn, BinderService.BIND_AUTO_CREATE);
- }
- });
- }
- //step 6:bindService parameter=>conn
- private ServiceConnection conn=new ServiceConnection()
- {
- @Override
- public void onServiceDisconnected(ComponentName name) {
- // TODO Auto-generated method stub
- }
- @Override
- public void onServiceConnected(ComponentName name, IBinder service) {
- //step 7:receive server method
- String bindername=((MyBinder)service).helloWorld("LD");
- Toast.makeText(BinderServiceActivity.this, bindername, 3000).show();
- Log.i("BinderService", "BinderService==>"+bindername);
- ((MyBinder)service).getService().helloservice();//绑定其他服务
- }
- };
- }
取消绑定
客户端
- 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);
- }
Android BinderService 过程的更多相关文章
- Cocos2dx-3.0版本 从开发环境搭建(Win32)到项目移植Android平台过程详解
作为重量级的跨平台开发的游戏引擎,Cocos2d-x在现今的手游开发领域占有重要地位.那么问题来了,作为Cocos2dx的学习者,它的可移植特性我们就需要掌握,要不然总觉得少一门技能.然而这个时候各种 ...
- Android系统启动过程-uBoot+Kernel+Android
摘要:本文是参考大量网上资源在结合自己查看源代码总结出来的,让自己同时也让大家加深对Android系统启动过程有一个更加深入的了解!再次强调,本文的大多数功劳应归功于那些原创者们,同时一些必要的参考链 ...
- Android 核心分析 之八Android 启动过程详解
Android 启动过程详解 Android从Linux系统启动有4个步骤: (1) init进程启动 (2) Native服务启动 (3) System Server,Android服务启动 (4) ...
- Android启动过程以及各个镜像的关系
Android启动过程 Android在启动的时候,会由UBOOT传入一个init参数,这个init参数指定了开机的时候第一个运行的程序,默认就是init程序,这个程序在ramdisk.img中.可以 ...
- Android编译过程详解(一)
Android编译过程详解(一) 注:本文转载自Android编译过程详解(一):http://www.cnblogs.com/mr-raptor/archive/2012/06/07/2540359 ...
- Android(java)学习笔记162:Android启动过程(转载)
转载路径为: http://blog.jobbole.com/67931/ 1. 关于Android启动过程的问题: 当按下Android设备电源键时究竟发生了什么? Android的启动过程是怎么样 ...
- Android 安装过程中的问题
Android 安装过程中的问题 上一篇我说到配置android环境,但是在具体的安装过程中,因为下载的软件或者方法不同,导致没有正确的结果,如果有一些错误的时候,可以试一试关闭eclipse软件, ...
- Android 系统启动过程简单记录
本文记录Android系统启动过程,包含从linux kernerl到luancher启动完成的过程: 1.linux内核完成系统设置后,会在系统文件中寻找‘init’文件,然后启动root进程或者说 ...
- Android 深入浅出 - Android系统启动过程
Activity的类继承关系及跟踪Activity的启动 Android系统启动过程 https://study.163.com/course/courseLearn.htm?courseId=213 ...
随机推荐
- ipxe引导远程的windows
使用ipxe解决本地引导远程系统 本地安装的centos7,然后修改grub.cfg来使用ipxe技术引导远程windows,实现双系统 os-->centos7 修改grub.cfg 在文件最 ...
- Nginx 安装
1 编译环境 yum -y groupinstall "Development Tools" "Server Platform Development" 2 ...
- javascript中的对象,原型,原型链和面向对象
一.javascript中的属性.方法 1.首先,关于javascript中的函数/“方法”,说明两点: 1)如果访问的对象属性是一个函数,有些开发者容易认为该函数属于这个对象,因此把“属性访问”叫做 ...
- NOI 05:最高的分数描述
描述 孙老师讲授的<计算概论>这门课期中考试刚刚结束,他想知道考试中取得的最高分数.因为人数比较多,他觉得这件事情交给计算机来做比较方便.你能帮孙老师解决这个问题吗? 输入输入两行,第一行 ...
- 在Sublime中编辑批处理并运行
在Sublime->Tool->Build System -> New Build System 复制如下代码名保存为 CMD.sublime-build { "cmd&q ...
- android nfc中Ndef格式的读写
1. 在onCreate()中获取NfcAdapter对象: NfcAdapter nfcAdapter = NfcAdapter.getDefaultAdapter(this); 2.在onNewI ...
- 跨列设置column-span
column-span主要用来定义一个分列元素中的子元素能跨列多少.column-width.column-count等属性能让一元素分成多列,不管里面元素如何排放顺序,他们都是从左向右的放置内容,但 ...
- Lunix 命令
awk '{a[$1]+=1;if(a[$1]==1){print $0}}' awk -F ',' '{print $1, $6}' IS.csv | sort -k1n -k2n | awk ...
- DLL注入
最近的项目涉及了软件破解方面的知识,记录一下. 将dll注入另一个进程. // Inject.cpp : Defines the exported functions for the DLL appl ...
- C# WinForm开发系列 - DataGridView
1.DataGridView实现课程表 testcontrol.rar 2.DataGridView二维表头及单元格合并 DataGridView单元格合并和二维表头.rar myMultiColHe ...