遇到下雨,写个简单例子,用于Activity与Service通信,之前也有一篇Binder的:点击。

例子非常简单:

MainActivity.java

package com.juno.testbind;import android.app.Activity;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.Bundle;
import android.os.IBinder;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView;public class MainActivity extends Activity {public final static String EXTRA_KEY_DATA = "key_data";private TestService mTestService;private ServiceConnection mConnection = new ServiceConnection() {public void onServiceConnected(ComponentName className, IBinder service) {mTestService = ((TestService.TestBinder)service).getService();}public void onServiceDisconnected(ComponentName className) {if(mTestService != null){mTestService = null;}}};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);bindService();initView();}private void initView() {findViewById(R.id.button1).setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {if (mTestService != null) {mTestService.doSomeThing();((TextView) findViewById(R.id.textView1)).setText(mTestService.getData());}}});}private void bindService() {Intent serviceIntent = new Intent(this, TestService.class);serviceIntent.putExtra(EXTRA_KEY_DATA, "data");bindService(serviceIntent, mConnection, Context.BIND_AUTO_CREATE);}@Overrideprotected void onDestroy() {super.onDestroy();unbindService(mConnection);}}

TestService.java

package com.juno.testbind;import android.app.Service;
import android.content.Intent;
import android.os.Binder;
import android.os.IBinder;
import android.widget.Toast;public class TestService extends Service {private IBinder mBind = new TestBinder();public class TestBinder extends Binder {TestService getService() {return TestService.this;}}@Overridepublic IBinder onBind(Intent intent) {if (intent != null) {//get Extra DataString data = intent.getStringExtra(MainActivity.EXTRA_KEY_DATA);Toast.makeText(this, data, Toast.LENGTH_SHORT).show();}return mBind;}@Overridepublic boolean onUnbind(Intent intent) {return super.onUnbind(intent);}public void doSomeThing() {Toast.makeText(this, "do some thing and set text to TextView", Toast.LENGTH_LONG).show();}public String getData() {return "test";}
}

是Service得

<service android:name="com.juno.testbind.TestService" />

android 使用Binder通信相关推荐

  1. Android系统中的Binder通信机制分析(7)- Java 层的 Binder 机制

    声明 其实对于Android系统Binder通信的机制早就有分析的想法,记得2019年6.7月份Mr.Deng离职期间约定一起对其进行研究的,但因为我个人问题没能实施这个计划,留下些许遗憾- 文中参考 ...

  2. Android Binder通信数据结构介绍

    Binder通信进程描述--binder_proc 结构体binder_proc用来描述一个正在使用Binder进程间通信机制的进程.当一个进程调用函数open打开/dev/binder设备文件时,B ...

  3. Android Binder通信机制

    Binder是Android系统进程间通信(IPC)方式之一.Linux已经拥有管道,systemVIPC,socket等IPC手段,却还要倚赖Binder来实现进程间通信,说明Binder具有无可比 ...

  4. Android Binder通信一次拷贝你真的理解了吗?

        Android Binder通信一次拷贝你真的理解了吗? Android Binder框架实现目录: Android Binder框架实现之Binder的设计思想 Android Binder ...

  5. 安卓进阶(2)之android Binder通信理解

    关键字 aidl 进程间通信 binder机制 aidl 全名安卓接口定义语言,用于进程间通信.简单理解的话,就是类似应用的服务器和客户端.服务器开启一个服务处理数据,客户端传递数据以及响应回调.具体 ...

  6. Android Binder通信学习

    Android Binder通信学习. 以Hello为例说明设计的几个概念关系: IhelloService.h : 提供给应用程序使用的类接口,注意是说明服务能够提供的哪些操作接口. [注意]实际不 ...

  7. Android跨进程通信Binder机制与AIDL实例

    文章目录 进程通信 1.1 进程空间划分 1.2 跨进程通信IPC 1.3 Linux跨进程通信 1.4 Android进程通信 Binder跨进程通信 2.1 Binder简介 2.2 Binder ...

  8. Android Binder通信原理(五):Java 端的service 注册和获取

    源码基于:Android R 0. 前言 在阐述相关的知识点,先整理个框架图,后面带着框架图来分析过程: Java 端对于binder 使用大致分为: Java client Java service ...

  9. android Service Binder交互通信实例

    android SDK提供了Service,用于类似*nix守护进程或者windows的服务. Service有两种类型: 本地服务(Local Service):用于应用程序内部 远程服务(Remo ...

最新文章

  1. 深入理解计算机系统之旅(一)计算机系统漫游
  2. BLDC(无刷直流电机)应用相关
  3. 个性化配置你的SQL Server on Linux
  4. HDFS读写数据的原理
  5. JSF和Facelets的lifecircle
  6. 开始位置 环状图_水星轨道发现千万公里环状结构,或将发现新的行星环
  7. Copy as Markdown - 将页面链接按照 Markdown 格式copy
  8. android market 选择
  9. asp.net core中的razor页面
  10. 自动部署 mysql_MySQL5.7自动部署脚本(持续更新)
  11. Postgresql源码(33)Btree索引读——整体流程_bt_first
  12. 01 SOLIDWORKS 2021概述
  13. python实现矩阵乘法(不用numpy)
  14. 高琪飞机项目飞机爆炸图片_爆炸式的工作机会和多项目同步
  15. 锐角云CEO许胜:因为认同,所以入行
  16. RSF-Center,集群模式下-协调数据结构
  17. 为什么说C++太复杂(复杂到哪了?)
  18. 【学习笔记】树莓派(3B+)及VMware对于代理Proxy的使用
  19. C#验证身份证是否有效
  20. 从键盘上输入两个字符串,将两个字符串首尾相连接后,再输出新的字符串(c语言)

热门文章

  1. hadoop Connection refused: no further information原因排查(Centos7)
  2. Java 操作 HDFS
  3. mysql originator_MySQL数据库事件调度(Event)
  4. dubbo使用nacos作为注册中心
  5. maven 项目管理和构建工具
  6. 1002 写出这个数 (20分)
  7. 【C语言进阶深度学习记录】三十七 C/C++中造成程序内存错误的原因(野指针)
  8. 【软件开发底层知识修炼】十四 快速学习GDB调试一 入门使用
  9. 【剑指offer - C++/Java】13、调整数组顺序使奇数位于偶数前面
  10. Hadoop 配置文件 启动方式