Service与Activity之间通信(学习笔记)
来源:互联网 发布:python 对数坐标轴 编辑:程序博客网 时间:2024/04/30 03:48
整个项目包括两个文档:MainActivity.java message.java;注释包括在代码里面,比较简单,就不另作阐述了
MainActivity.java
package com.example.test_message;import android.os.Bundle;import android.os.IBinder;import android.os.Message;import android.os.Messenger;import android.view.View;import android.widget.Button;import android.app.Activity;import android.content.ComponentName;import android.content.Intent;import android.content.ServiceConnection;public class MainActivity extends Activity implements android.view.View.OnClickListener{Messenger mMessenger = null;boolean isBond;//实例化一个ServiceConnection()对象用以管理Service的状态private ServiceConnection mConnection = new ServiceConnection() {//当服务与调用者(这里即为"MainActivity")解除绑定时调用@Overridepublic void onServiceDisconnected(ComponentName name) {// TODO Auto-generated method stubmConnection = null;isBond = false;}//当服务与调用者(这里即为"MainActivity")绑定时调用@Overridepublic void onServiceConnected(ComponentName name, IBinder service) {// TODO Auto-generated method stub//通过IBinder创建一个进程间传输信息的Messenger对象:mMessengermMessenger = new Messenger(service);isBond = true;}};public void sayHellop(int MSG){if (!isBond) {/** * 通过已经和service绑定的Message(mMessenger)可以进行进程间通信 * 。send(Message msg)方法可以发送特定的信息(msg对象中定义内容) */Message msg = Message.obtain(null, MSG, 0, 0);try {mMessenger.send(msg);} catch (Exception e) {// TODO: handle exceptione.printStackTrace();}}}Button button1,button2,button3;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);button1 = (Button)findViewById(R.id.button1);button1.setOnClickListener(this);button2 = (Button)findViewById(R.id.button2);button2.setOnClickListener(this);button3 = (Button)findViewById(R.id.button3);button3.setOnClickListener(this);}@Overridepublic void onClick(View v) {// TODO Auto-generated method stubswitch (v.getId()) {case R.id.button1://绑定服务bindService(new Intent(this, message.class), mConnection, BIND_AUTO_CREATE);break;case R.id.button2:if (isBond) {unbindService(mConnection);isBond = false;}break;case R.id.button3://发送的内容直接利用message中定义的常量sayHellop(message.MSG_DATA);break;default:break;}}}
message.java
package com.example.test_message;import android.annotation.SuppressLint;import android.app.Service;import android.content.Intent;import android.os.Handler;import android.os.IBinder;import android.os.Message;import android.os.Messenger;import android.widget.Toast;public class message extends Service {static final int MSG_HELLO = 1;static final int MSG_DATA = 2;static final int MSG_BACK = 3;@SuppressLint("HandlerLeak")class IncomingHandler extends Handler{@Overridepublic void handleMessage(Message msg) {// TODO Auto-generated method stubswitch (msg.what) {case MSG_HELLO:Toast.makeText(getApplicationContext(), "HELLO!", Toast.LENGTH_SHORT).show();break;case MSG_DATA:Toast.makeText(getApplicationContext(), "THE_DATA", Toast.LENGTH_SHORT).show();break;case MSG_BACK:break;default:super.handleMessage(msg);break;}}}final Messenger mMessenger = new Messenger(new IncomingHandler());public IBinder onBind(Intent intent){Toast.makeText(getApplicationContext(), "Binding!", Toast.LENGTH_SHORT).show();return mMessenger.getBinder();}}
- Service与Activity之间通信(学习笔记)
- Activity与Service之间通信
- Activity与Service之间通信
- 【学习】Service与Activity之间通信的几种方式
- activity与service通信学习
- android activity与service之间的通信
- Android Service与Activity之间通信方式
- Android Service与Activity之间通信
- Activity与service 之间的通信
- Activity 与 Service 之间的通信
- activity 与 service 之间的通信
- activity 与 service 之间的通信
- activity 与 service 之间的通信
- activity 与 service 之间的通信
- Android组件---Service,AIDL,Service与Activity之间的通信
- android学习笔记---service和activity之间通信的几种方式
- Activity与Service通信(不同进程之间)
- Android中Activity与Service之间的通信
- Java找不到或无法加载主类解决方法
- 初学java语言的方法(二)
- 数据结构-线性表-链式存储结构完整可执行代码
- Ubuntu 12.04 添加程序启动器
- Android Ndk 编译时出现java.lang.UnsatisfiedLinkError: Native method not found:问题归纳
- Service与Activity之间通信(学习笔记)
- Cracking the Coding Interview Chap1 Q1.5
- u-Boot 顶层Makefile解析(三)
- 驾驭大数据
- 将一个数分解成多个素数和的方法数
- 并查集(Union-Find)算法介绍
- 关于内存对齐
- Java类加载顺序
- 关于调用函数和不调用函数的区别