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 ...
随机推荐
- AJAX发送参数到后台,前台火狐debug报undefine
后面经过查找:估计是数据并不是Json格式,由于var PATIENT_ID=getIdSelections();其中PATIENT_ID是数组,所以必须转成字符串. $('#table').on(' ...
- typealias和泛型接口
typealias 是用来为已经存在的类型重新定义名字的,通过命名,可以使代码变得更加清晰.使用的语法也很简单,使用 typealias 关键字像使用普通的赋值语句一样,可以将某个已经存在的类型赋值为 ...
- Win8电脑蓝屏并提示dpc_watchdog_violation
用尽系统自带的工具均无法恢复,F8能进系统.后来使用如下方法解决了 这种错误情况的发生可能是由于 iastor.sys 驱动没有完全兼容 Windows 8系统所造成的. 微软正在研究一种可行方案,来 ...
- Reflection应用场景-利用反射机制将表单数据自动填充到JavaBean中
- DNS压力测试工具dnsperf简介
dnsperf是我最近写的一个开源的DNS压力测试工具,用户可以用它来对DNS服务器或者Local DNS做压力测试.dnsperf目前的实现是单进程模式,通过epoll非阻塞地处理网络事件. dns ...
- nodejs学习心得
其实这次软件工程的微信公众号大作业对我来说是一个很大的挑战? 为什么这么说呢?因为我的基础太差了,实话说,到现在,c语音,java这些我恐怕就只能打出个hello world 自己太懒了,不想去学.这 ...
- hp-pa安装oracle和bash
一.安装oracle数据库 安装之前先进行环境检查: 1.检查系统版本 #uname -a 2.查看内存大小 #/usr/contrib/bin/machinfo | grep -i Memory 3 ...
- UIAlertController警告视图和操作表单
//创建一个myAlert1操作表单对象(UIAlertControllerStyleActionSheet为操作表单,UIAlertControllerStyleAlert为警告视图) UIAler ...
- c#序列化json字符串及处理
上面提到的第四篇文章最后有个解析数组的例子,出现了 .First.First.First.First.Children(); 我表示很晕,网上找的的例子大多数是关于JObject的,但是我很少看到JA ...
- C# MVC jsonp初接触成功
利用jsonp进行跨域请求资源 C# MVC ApiControllers准备如下: 1.需要在引用处右键管理NuGet安装jsonp插件 2.在Application_Start()中配置 Glob ...