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 ...
随机推荐
- 10个核心的Linux面试问题与答案
http://www.geekfan.net/8571/ compgen -c,可以打印出所有支持的命令列表使用Linux 命令dirs可以将当前的目录栈打印出来.使用linux命令 ’disown ...
- Integer.toBinaryString()的源代码解析
private static String toUnsignedString(int i, int shift) { char[] buf = new char[32];//i是要整形,这里得把它化成 ...
- 随手记一次用C#正则表达式获取下拉菜单html标签<select>以及相关属性值
随手记一次用C#正则表达式获取下拉菜单html标签<select>以及相关属性值 1:有如下html: .................. <select id="aaa ...
- Hadoop学习笔记: 安装配置Hive
1. 在官网http://hive.apache.org/下载所需要版本的Hive,以下我们就以hive 2.1.0版为例. 2. 将下载好的压缩包放到指定文件夹解压,tar -zxvf apache ...
- CURL in windows
目前版本为: 7.50.3 >> 不同操作系统及版本的下载页面 https://curl.haxx.se/download/?C=M;O=D Windows上的下载入口及地址为: htt ...
- Javascript Promise入门
是什么? https://www.promisejs.org/ What is a promise? The core idea behind promises is that a promise r ...
- Gulp: Getting Started
https://github.com/gulpjs/gulp/blob/master/docs/getting-started.md 1. Install gulp globally: $ npm i ...
- [转]8年javascript知识点积累
http://www.cnblogs.com/tylerdonet/p/5543813.html
- HDU 5047 Sawtooth(大数优化+递推公式)
http://acm.hdu.edu.cn/showproblem.php?pid=5047 题目大意: 给n条样子像“m”的折线,求它们能把二维平面分成的面最多是多少. 解题思路: 我们发现直线1条 ...
- 使用hbuilder编辑器实现移动app打包
作为一枚web前端来讲,需要了解的东西太多,需要学习的也太多了,那天因为公司需求,就研究了下移动网站打包成app的方法,这种东西好像是H5出来后就有推出的,因为性功能不行,就没怎么关注,但现在移动互联 ...