Activity数据传输到服务

时间:2022-12-18 15:09:45

activity数据接口负责启动该服务包。service获取数据。手术。

详细demo如下面:

package com.example.android_service_trance;

import android.annotation.SuppressLint;
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.os.Parcel;
import android.os.RemoteException;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView; import com.example.android_service_trance.MyService.LocalBinder; @SuppressLint("Recycle")
public class MainActivity extends Activity { private Button bindService=null;
private Button callService=null;
private Button communicationService=null;
private TextView tv=null;
private boolean flag=false;//默觉得不绑定
private MyService myService=null;
private LocalBinder binder;//服务里的对象
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bindService=(Button)this.findViewById(R.id.button1);
callService=(Button)this.findViewById(R.id.button2);
communicationService=(Button)this.findViewById(R.id.button3);
tv=(TextView)this.findViewById(R.id.textView1);
bindService.setOnClickListener(new OnClickListener() { @Override
public void onClick(View v) { //获得意图
Intent intent=new Intent(MainActivity.this,MyService.class);
//绑定服务
bindService(intent, connection, Context.BIND_AUTO_CREATE); }
});
callService.setOnClickListener(new OnClickListener() { @Override
public void onClick(View v) {
if(flag){
int result=myService.getRandom();
tv.setText("<<<<<<<<"+result);
} }
});
communicationService.setOnClickListener(new OnClickListener() { @Override
public void onClick(View v) {
//往service中传递值的对象
Parcel data=Parcel.obtain();
data.writeInt(10086);
data.writeString("李华");
Parcel reply=Parcel.obtain();
try { binder.transact(IBinder.LAST_CALL_TRANSACTION, data, reply, 0);
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//从service里读数据
Log.i("Main<<<<<<<<",reply.readString());
Log.i("Main<<<<<<<<<",reply.readInt()+"");
}
}); } //解除绑定
@Override
protected void onStop() { super.onStop();
if(flag)
{
//解除绑定
unbindService(connection);
flag=false;
}
} @Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
} //连接activity和service的桥梁
private ServiceConnection connection=new ServiceConnection(){ @Override
public void onServiceConnected(ComponentName arg0, IBinder iBinder) {
//连接 //获得LocalBinder
binder=(LocalBinder)iBinder;
//获得MyService实例
myService=binder.getService(); flag=true; } @Override
public void onServiceDisconnected(ComponentName arg0) {
//不连接 flag=false; }}; }

service端:

/**
*Version:
*author:YangQuanqing
*Data:
*/
package com.example.android_service_trance; import java.util.Random; import android.app.Service;
import android.content.Intent;
import android.os.Binder;
import android.os.IBinder;
import android.os.Parcel;
import android.os.RemoteException;
import android.util.Log; /**
* @author YangQuanqing yqq
*
*/
public class MyService extends Service { //定义一个随机数用于測试
private Random random=new Random();
private LocalBinder lb=new LocalBinder();
//获得当前类的实例
public class LocalBinder extends Binder{ public MyService getService()
{
return MyService.this;
} @Override
protected boolean onTransact(int code, Parcel data, Parcel reply,
int flags) throws RemoteException {
//Activity里获取数据
Log.i("SERVICE<<<<<<<<",data.readString());
Log.i("SERVICE<<<<<<<<<",data.readInt()+"");
reply.writeString("小名");
reply.writeInt(1990); return super.onTransact(code, data, reply, flags);
} } @Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
} @Override
public void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
} @Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return lb;
}
//获得一个随机数
public int getRandom()
{ return random.nextInt(22);
} }

版权声明:本文博客原创文章,博客,未经同意,不得转载。

Activity数据传输到服务的更多相关文章

  1. Activity与WindowManagerService服务的连接过程分析

    Activity组件与WindowManagerService服务之间的连接模型如下图所示: 1. Activity组件 -> WindowManagerService的连接 Activity会 ...

  2. Android窗口管理服务WindowManagerService显示Activity组件的启动窗口(Starting Window)的过程分析

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/8577789 在Android系统中,Activ ...

  3. Android开发学习—— Service 服务

    Service运行于后台的一个组件,用来运行适合运行在后台的代码,服务是没有前台界面,可以视为没有界面的activity. 服务可以被手动关闭,不会重启,但是如果被自动关闭,内存充足就会重启. sta ...

  4. Android 面试题--Activity

    1.什么是 Activity?Activity是Android组件中最基本也是最为常见用的四大组件(Activity,Service服务,Content Provider内容提供,BroadcastR ...

  5. Activity详解生命周期&lpar;Android&rpar;

    Activity是Android组件中最基本也是最为常见用的四大组件(Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器)之 ...

  6. Android的四大组件之Activity

    Android的四大组件之Activity Activity:是Android组件中最基本也是最为常见用的四大组件(Activity,Service服务,Content Provider内容提供者,B ...

  7. android之服务

    android中的进程优先级 前台进程 拥有一个正在与用户交互的Activity(onResume方法被调用) 与一个前台Activity绑定的服务 服务调用了startForeground onCr ...

  8. Apache Thrift 服务开发框架学习记录

    Apache Thrift 是 Facebook 实现的一种高效的.支持多种编程语言的远程服务调用的框架. 前言: 目前流行的服务调用方式有很多种,例如基于 SOAP 消息格式的 Web Servic ...

  9. android 一个简单的服务例子

    public class MessageService extends Service { // 获取消息线程 private MessageThread messageThread = null; ...

随机推荐

  1. WebService返回DataTable

    http://blog.csdn.net/wxnjob/article/details/8638420 webservice返回datatable时报序列化错误 以下三种方案的实质应该都是序列化的,有 ...

  2. SQLServer学习笔记系列6

    一.写在前面的话 时间是我们每个人都特别熟悉的,但是到底它是什么,用什么来衡量,可能很多人会愣在那里.时间可以见证一切,也可以消磨一切,那些过往的点点滴滴可思可忆.回想往年清明节过后,在家乡的晚上总能 ...

  3. mysql-查看全局变量设置

    show global variables like '%sql_mode%' 全局变量

  4. java执行顺序

    本文讨论Java中(静态)变量.(静态)代码块的执行顺序 首先创建3个类: 1.Foo类,用于打印变量 public class Foo { public Foo(String word) { Sys ...

  5. JAVA生成二维码图片代码

    首先需要导入 QRCode.jar 包 下载地址看这里   http://pan.baidu.com/s/1o6qRFqM import java.awt.Color;import java.awt. ...

  6. 使用 dbms&lowbar;xplan&period;display 按照 plan&lowbar;hash&lowbar;value 查执行计划的方法

    dbms_xplan.display_* 能按照 plan_hash_value 只有 display_awr 方法,如果这个SQL PLAN 刚刚生成,没有写入到AWR怎么办呢? 可以将 V$SQL ...

  7. 【转】iOS设备的UDID是什么?苹果为什么拒绝获取iOS设备UDID的应用?如何替代UDID?

    本文讲诉的主要是为什么苹果2011年8月发布iOS 5后就开始拒绝App获取设备的UDID以及UDID替补方案,特别提醒开发者苹果App Store禁止访问UDID的应用上架(相关推荐:APP被苹果A ...

  8. PHP、Java、C&num;实现URI参数签名算法,确保应用与REST服务器之间的安全通信,防止Secret Key盗用、数据篡改等恶意攻击行为

    简介 应用基于HTTP POST或HTTP GET请求发送Open API调用请求时,为了确保应用与REST服务器之间的安全通信,防止Secret Key盗用.数据篡改等恶意攻击行为,REST服务器使 ...

  9. MVC3中 ViewBag、ViewData和TempData的使用和区别(不是自己写的)

    (网上抄的,并未消化)在MVC3开始,视图数据可以通过ViewBag属性访问,在MVC2中则是使用ViewData.MVC3中保留了ViewData的使用.ViewBag 是动态类型(dynamic) ...

  10. Entity Framework with MySQL 学习笔记一&lpar;insert&comma;update&comma;delete&rpar;

    先说说 insert 吧. 当EF执行insert时,如果我们传入的对象是有关联(1对多等)的话,它会执行多个语句 insert到多个表, 并且再select出来填充我们的属性(因为有些column默 ...