xml:

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.zzw.testmessenger.MainActivity" > <Button
android:id="@+id/bind"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:text="绑定" /> <Button
android:id="@+id/send"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:text="发送数据" /> <Button
android:id="@+id/start"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:text="加法" /> </RelativeLayout>

布局

MainActivity:

 package com.zzw.testmessenger;

 import android.app.Activity;
import android.content.ComponentName;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.Bundle;
import android.os.IBinder;
import android.os.Message;
import android.os.Messenger;
import android.os.RemoteException;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button; public class MainActivity extends Activity implements OnClickListener {
Button bind, send, start;
ServiceConnection sc;
Messenger sender; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); bind = (Button) findViewById(R.id.bind);
bind.setOnClickListener(this);
send = (Button) findViewById(R.id.send);
send.setOnClickListener(this);
start = (Button) findViewById(R.id.start);
start.setOnClickListener(this);
} @Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.bind:
bindService();
break;
case R.id.send:
sendMessageToService();
break;
case R.id.start:
useStartService();
break;
}
} private void bindService() {
sc = new ServiceConnection() {
@Override
public void onServiceDisconnected(ComponentName name) {
} @Override
public void onServiceConnected(ComponentName name, IBinder service) {
sender = new Messenger(service);
}
}; Intent intent = new Intent(MainActivity.this, MessengerSerivice.class);
bindService(intent, sc, BIND_AUTO_CREATE);
} private void sendMessageToService() {
try {
Message msg = new Message();
int a = (int) (Math.random() * 20);
int b = (int) (Math.random() * 20);
int s[] = { a, b };
msg.obj = s;
sender.send(msg);
Log.d("sendMessageToService", "发送成功----->");
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} private void useStartService() {
Intent intent = new Intent(MainActivity.this, MessengerSerivice.class);
startService(intent);
} @Override
protected void onDestroy() {
unbindService(sc);
Intent intent = new Intent(MainActivity.this, MessengerSerivice.class);
stopService(intent);
super.onDestroy();
}
}

MessengerSerivice:

 package com.zzw.testmessenger;

 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.util.Log; public class MessengerSerivice extends Service {
private Messenger messenger;
Handler handler;
int a, b, sum; @Override
public void onCreate() {
Log.d("MessengerSerivice", "onCreate");
handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
int[] s = (int[]) msg.obj;
a = s[0];
b = s[1];
Log.d("收到的msg", "a=" + a + " b=" + b);
}
};
messenger = new Messenger(handler);
super.onCreate();
} @Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.d("MessengerSerivice", "onStartCommand");
sum = a + b;
Log.d("在onStartCommand中算出的和", sum + "");
return super.onStartCommand(intent, flags, startId);
} @Override
public IBinder onBind(Intent intent) {
Log.d("MessengerSerivice", "onBind");
return messenger.getBinder();
} }

最新文章

  1. mongodb全套配置
  2. Node.js 给前端带来了什么
  3. 通过寄生组合式继承创建js的异常类
  4. MySQL Group Replication 技术点
  5. 将jar包直接Buldpath所引起的问题
  6. WPExpress78_update 离线包
  7. NOI OpenJudge 8469 特殊密码锁 Label贪心
  8. cron
  9. 删除数据报ORA-00600: internal error code, arguments: [ktbesc_plugged]
  10. 为什么很多人用keepalived来实现redis故障转移
  11. Unity3D ShaderLab 漫反射卷积光照模型
  12. HDU 3480 division
  13. Centos移除图形界面
  14. 让MySQL支持中文
  15. wpf 窗体中显示当前系统时间
  16. python3 读取大文件分解成若干小文件
  17. ZOJ3519-Beautiful People:最长上升子序列的变形
  18. java jquery 函数多參数传递
  19. 自学Zabbix3.9.1-模板Templates-创建
  20. sqlserver中select造成死锁

热门文章

  1. iOS中使用FMDB事务批量更新数据库
  2. 在weblogic11g上发布项目遇到的一个错误(不支持web-app_3_0)
  3. EntityFramework 4使用存储过程分页
  4. JQuery上传插件uploadify整理(Options)
  5. Testlink中分析结果的图表显示乱码
  6. 初探接口测试框架--python系列2
  7. django中时区设置
  8. jquery 设置元素内容html(),text(),val()
  9. CodeSmith 7.01破解下载
  10. ping 以及 traceroute 用法