实验三 本地服务.doc_第1页
实验三 本地服务.doc_第2页
实验三 本地服务.doc_第3页
实验三 本地服务.doc_第4页
实验三 本地服务.doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机与通信工程学院天津理工大学计算机与通信工程学院实验报告2012 至 2013 学年 第 二 学期实验三 本地服务Service课程名称软件主流开发平台与工具学号学生姓名年级专业教学班号实验地点实验时间 主讲教师 辅导教师实验(二)实验名称Service软件环境WindowsEcllipse & Android SDK硬件环境PC 实验目的:完成Android本地服务建立及绑定完成Android应用程序建立及界面处理技术,包括以下内容:l Android应用层程序建立l 本地服务定义及实现l 本地服务绑定及调用l 多线程使用l Handler使用实验内容(应包括实验题目、实验要求、实验任务等)实验要求:完成“Calcultor”功能在已有程序框架及界面基础上,分步骤实现下述功能:步骤一、定义并实现一个简单的具备“计算功能“的服务组件,该组件仅有一个”比较“函数输入两个整数,比较其中较大的做为返回值。主界面上有一个“绑定服务”及“停止服务”按钮,单击“绑定服务”绑定新实现的服务;单击“停止服务”,停止绑定。主界面另一个“比较”按钮,比较两个输入值,并将结果输出到主界面的TextView中步骤二、使用界面“CheckBox”控件,当控件被选中的情况下,绑定服务的行为与“步骤一”不同,具体为,创建一个新线程,该线程定时产生两个随机整数,并比较他们的大小。同时将结果利用Handler反馈到主界面中附:安装apk: adb install 路径/Calculator.apk实验过程与实验结果(可包括实验实施的步骤、算法描述、流程、结论等)步骤一: 1. 定义并实现一个简单的具备“计算功能“的服务组件,该组件仅有一个”比较“函数输入两个整数,比较其中较大的做为返回值。 参照课本中P132页SimpleMathServiceDemo,课本中是实现两个数的相加:public long Add(long a ,long b)return a+b;本实验是比较两个整数,将较大者作为返回值:public int compare(int a, int b)if(a b) return a;else return b; 2.主界面上有一个“绑定服务”及“停止服务”按钮,单击“绑定服务”绑定新实现的服务;单击“停止服务”,停止绑定。主界面另一个“比较”按钮,比较两个输入值,并将结果输出到主界面的TextView中 以绑定方式使用Service,能够获取到Service对象,不仅能够启动Service,而且能够调用正在运行中的Service实现的公有方法和属性。为了使Service支持绑定,需要在Service类中重载onBind()方法,并在onBind()方法中返回Service对象。 当Service被绑定时,系统会调用onBind()函数,通过onBind()函数的返回值,将Service对象返回给调用者。onBind()函数的返回值必须是符合IBinder接口,因此需要声明一个接口变量mBinder,mBinder符合onBind()函数返回值的要求,因此将mBinder传递给调用者。IBinder是用于进程内部和进程间过程调用的轻量级接口,定义了与远程对象交互的抽象协议,使用时通过继承Binder的方法实现,即LocalBinder继承Binder的一个内部类,在代码中要实现getService()函数,当调用者获取到mBinder后,通过调用getService()即可获得到Service对象。步骤二、使用界面“CheckBox”控件,当控件被选中的情况下,绑定服务的行为与“步骤一”不同,具体为,创建一个新线程,该线程定时产生两个随机整数,并比较他们的大小。同时将结果利用Handler反馈到主界面中private Runnable backgroundWork = new Runnable() Overridepublic void run()try while(!Terrupted() int input1 = (int) (100*Math.random();int input2 = (int) (100*Math.random();int result = (input1 input2) ? input1 : input2;Thread.sleep(1000);CalculatorActivity.UpdateGUI(input1, input2, result); catch (InterruptedException e) / TODO Auto-generated catch blocke.printStackTrace();布局的需要如下:上面有三个按钮,分别为“启动服务”,“终止服务”,“比较”;其下是一个“多线程”的CheckBox。下面是一个TextView显示的是输入一个整数1,其右是一个EditText,用于输入第一个整数下面是一个TextView显示的是输入一个整数2,其右是一个EditText,用于输入第二个整数下面是一个TextView显示的是结果。实验代码:package edu.tjut.cs.calculator;import android.app.Activity;import android.content.ComponentName;import android.content.Context;import android.content.Intent;import android.content.ServiceConnection;import .Uri;import android.os.Bundle;import android.os.Handler;import android.os.IBinder;import android.util.Log;import android.view.View;import android.widget.*;public class CalculatorActivity extends Activity /* Called when the activity is first created. */private static TextView resultTextView = null;private static int input1, input2, result; private CalculatorService calculatorService = null; private static Handler handler = new Handler(); public static void UpdateGUI(int firstValue, int secondValue, int res) input1 = firstValue; input2 = secondValue; result = res; handler.post(Refresh); private static Runnable Refresh = new Runnable() Override public void run() if(input1 = result) resultTextView.setText(String.valueOf(input1) + + String.valueOf(input2); else resultTextView.setText(String.valueOf(input1) + b) return a;else return b;private Runnable backgroundWork = new Runnable() Overridepublic void run()try while(!Terrupted() int input1 = (int) (100*Math.random();int input2 = (int) (100*Math.random();int result = (input1 input2) ? input1 : i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论