android的后台报告,Android组件通信和后台服务实验报告.doc

dc9044ec604898353f6b3e18c2172abd.gifAndroid组件通信和后台服务实验报告.doc

.XX航空大学实验报告 课程名称 移动终端编程技术 实验名称 Android组件通信和后台服务 班级 姓名 同组人 指导教师评定 签名 一、实验目的了解使用Intent进行组件通信的原理,掌握使用Intent启动Activity的方法;掌握获取Activity返回值的方法;了解Intent过滤器的原理与匹配机制;了解Service的原理和用途;掌握进程内服务的管理方法;掌握服务的隐式启动和显式启动方法;二、实验工具Eclipse(MyEclipse) ADT Android2.2 SDK;三、实验题目1.编程实现 功能描述主界面上有一个“登录”按钮,点击“登录”按钮后打开一个新的Activity;新的Activity上面有输入用户名和密码的控件,在用户关闭这个Activity后,将用户输入的用户名和密码传递到主界面中。 编程要点主界面的Activity命名为MainActivity;启动新的Activity命名为UserLoginActivity;分别使用显示启动和隐式启动的方式,启动新的Activity;用户名中不能出现“”符号,同时长度不超过12个字符;密码使用密码文本显示方式,即显示为“******”,同时只能为数字; 返回的用户名和密码要以Toast的方式显示出来; MainActivity和UserLoginActivity中各个生命周期的回调函数中要以Log.i方式显示日志信息。2. 编程实现 功能描述编程建立一个简单的进程内服务,实现比较两个整数大小的功能。服务提供IntCompareInt, Int函数,输入两个整数,输出较大的整数。 编程要点主界面的Activity命名为MainActivity;提供两个EditText,分别输入两个整数;提供一个Botton,启动比较过程;提供一个TextView,显示较大的整数;分别使用启动方式和绑定方式使用Service;分别使用Handle和AsyncTask更新TextView中的内容。四、 实验步骤1. 详细工程结构及部分代码(显式和隐式都在其中)结果代码MainActivity.javapublic class MainActivity extends Activity protected int SUBACTIVITY1 1;private static String TAG MainActivity;Button button1,button2;public void onCreateBundle savedInstanceState super.onCreatesavedInstanceState;setContentViewR.layout.main;Log.iTAG, 1 onCreate;button1 Button this.findViewByIdR.id.button1;button2 Button this.findViewByIdR.id.button2;button1.setOnClickListenernew View.OnClickListener public void onClickView v Intent intent new IntentMainActivity.this,UserLoginActivity.class;Toast.makeTextgetApplicationContext, 显示启动, Toast.LENGTH_SHORT.show;startActivityForResultintent, SUBACTIVITY1; ;button2.setOnClickListenernew View.OnClickListenerpublic void onClickView v Intent intent new Intentcom.example.test;Toast.makeTextgetApplicationContext, 隐式启动, Toast.LENGTH_SHORT.show;startActivityForResultintent, SUBACTIVITY1;;protected void onActivityResultint requestCode, int resultCode, Intent data super.onActivityResultrequestCode, resultCode, data;if resultCode RESULT_OK Uri uriData data.getData;Toast.makeTextgetApplicationContext, uriData.toString,Toast.LENGTH_SHORT.show; else Toast.makeTextgetApplicationContext, 用户名和密码为空, Toast.LENGTH_SHORT.show; Override //可视生命周期开始时被调用,对用户界面进行必要的更改 public void onStart super.onStart; Log.iTAG, 2 onStart; Override //在onStart后被调用,用于恢复onSaveInstanceState保存的用户界面信息 public void onRestoreInstanceStateBundle savedInstanceState super.onRestoreInstanceStatesavedInstanceState; Log.iTAG, 3 onRestoreInstanceState; Override //在活动生命周期开始时被调用,恢复被onPause停止的用于界面更新的资源 public void onResume super.onResume; Log.iTAG, 4 onResume; Override // 在onResume后被调用,保存界面信息 public void onSaveInstanceStateBundle savedInstanceState super.onSaveInstanceStatesavedInstanceState; Log.iTAG, 5 onSaveInstanceState; Override //在重新进入可视生命周期前被调用,载入界面所需要的更改信息 public void onRestart super.onRestart; Log.iTAG, 6 onRestart; Override //在活动生命周期结束时被调用,用来保存持久的数据或释放占用的资源。 public void onPause super.onPause; Log.iTAG, 7 onPause; Override //在可视生命周期结束时被调用,一般用来保存持久的数据或释放占用的资源 public void onStop super.onStop; Log.iTAG, 8 onStop; Override //在完全生命周期结束时被调用,释放资源,包括线程、数据连接等 public void onDestroy super.onDestroy; Log.iTAG, 9 onDestroy; UserLoginActivity,javapublic class UserLoginActivity extends Activity EditText username,password;Button ,reset;private static String TAG MainActivity;protected void onCreateBundle savedInstanceState // TODO Auto-generated stubsuper.onCreatesavedInstanceState;setContentViewR.layout.login; Log.iTAG, 1 onCreate;usernameEditTextthis.findViewByIdR.id.username;passwordEditTextthis.findViewByIdR.id.password;Buttonthis.findViewByIdR.id.;resetButtonthis.findViewByIdR.id.reset;username.setFocusabletrue;username.setOnKeyListenernew OnKeyListenerpublic boolean onKeyView v, int keyCode, KeyEvent event // TODO Auto-generated stubint unicodeChar event.getUnicodeChar;ifunicodeChar 64return true;else return false;;.setOnClickListenernew View.OnClickListener public void onClickView v // TODO Auto-generated stubString name username.getText.toString;String passpassword.getText.toString;String uriString用户名name密码pass; Uri data Uri.parseuriString; Intent result new Intentnull, data; setResultRESULT_OK, result;finish;;reset.setOnClickListenernew View.OnClickListener public void onClickView v // TODO Auto-generated stubsetResultRESULT_CANCELED, null;finish;; Override //可视生命周期开始时被调用,对用户界面进行必要的更改 public void onStart super.onStart; Log.iTAG, 2 onStart; Override //在onStart后被调用,用于恢复onSaveInstanceState保存的用户界面信息 public void onRestoreInstanceStateBundle savedInstanceState super.onRestoreInstanceStatesavedInstanceState; Log.iTAG, 3 onRestoreInstanceState; Override //在活动生命周期开始时被调用,恢复被onPause停止的用于界面更新的资源 public void onResume super.onResume; Log.iTAG, 4 onResume; Override // 在onResume后被调用,保存界面信息 public void onSaveInstanceStateBundle savedInstanceState super.onSaveInstanceStatesavedInstanceState; Log.iTAG, 5 onSaveInstanceState; Override //在重新进入可视生命周期前被调用,载入界面所需要的更改信息 public void onRestart super.onRestart; Log.iTAG, 6 onRestart; Override //在活动生命周期结束时被调用,用来保存持久的数据或释放占用的资源。 public void onPause super.onPause; Log.iTAG, 7 onPause; Override //在可视生命周期结束时被调用,一般用来保存持久的数据或释放占用的资源 public void onStop super.onStop; Log.iTAG, 8 onStop; Override //在完全生命周期结束时被调用,释放资源,包括线程、数据连接等 public void onDestroy super.onDestroy; Log.iTAG, 9 onDestroy; 2. 详细工程结构及部分代码(显式和隐式都在其中)显式启动结果部分代码MainActivity.javapublic class MainActivity extends Activity /** Called when the activity is first created. */public static int maxNum;public static Handler handlernew Handler;private static TextView resultnull;private static Button comparenull;private static Button resetnull;private static EditText onenull;private static EditText twonull;public static void UpdateGUIint refreshDoublemaxNumrefreshDouble;handler.postRefreshLable; private static Runnable RefreshLablenew Runnablepublic void run result.setTextString.valueOfmaxNum;; public void onCreateBundle savedInstanceState final Bundle mybundlenew Bundle; super.onCreatesavedInstanceState; setContentViewR.layout.main; final Intent intentnew IntentMainActivity.this,CompareService.class; resultEditTextfindViewByIdR.id.result; compareButtonfindViewByIdRpare; resetButtonfindViewByIdR.id.reset; oneEditTextfindViewByIdR.id.one; twoEditTextfindViewByIdR.id.two; compare.setOnClickListenernew OnClickListener public void onClickView v mybundle.putStringone, one.getText.toString; mybundle.putStringtwo, two.getText.toString; intent.putExtrasmybundle; startServiceintent; ; reset.setOnClickListenernew OnClickListener public void onClickView v one.setTextnull; two.setTextnull; result.setTextnull; ; CompareService.javapublic class CompareService extends Service private Thread workThread;Bundle bundlenull;int one0,two0;public void onCreate super.onCreate; workThread new Threadnull,backgroudWork,WorkThread;Overridepublic void onStartIntent intent, int startId super.onStartintent, startId; bundleintent.getExtras; String c1bundle.getStringone; String c2bundle.getStringtwo; ifc1.toString.equals twoInteger.parseIntc2; if workThread.isAlive workThread.start; public IBinder onBindIntent intent return null;private Runnable backgroudWork new RunnableOverridepublic void run int randomDouble IntCompareone,two;MainActivity.UpdateGUIrandomDouble;stopSelf;;int IntCompareint a,int bifabreturn a;elsereturn b;隐式启动 结果部分代码MainActivity.javapublic class MainActivity extends Activity /** Called when the activity is first created. */private boolean isBound false;private CompareService compareService;int a0,b0; Override public void onCreateBundle savedInstanceState super.onCreatesavedInstanceState; setContentViewR.layout.main; final TextView resultTextViewfindViewByIdR.id.result; Button compareButtonfindViewByIdRpare; Button resetButtonfindViewByIdR.id.reset; final EditText oneEditTextfindViewByIdR.id.one; final EditText twoEditTextfindViewByIdR.id.two; ifisBoundIntent serviceIntentnew IntentMainActivity.this,CompareService.class;bindServiceserviceIntent,mConnection,Context.BIND_AUTO_CREATE;isBoundtrue; compare.setOnClickListenernew OnClickListenerpublic void onClickView v String c1one.getText.toString;String c2two.getText.toString;ifc1.equalsbInteger.parseIntc2;result.setTextString.valueOfcompareService.IntComparea, b; ; reset.setOnClickListenernew OnClickListener public void onClickView v one.setTextnull; two.setTextnull; result.setTextnull; ; private ServiceConnection mConnectionnew ServiceConnectionOverridepublic void onServiceConnectedComponentName name, IBinder service // TODO Auto-generated stubcompareServiceCompareService.LocalBinderservice.getService;Overridepublic void onServiceDisconnectedComponentName name // TODO Auto-generated stubcompareServicenull;;CompareService.java public class CompareService extends Service private final IBinder mBindernew LocalBinder;class LocalBinder extends Binder CompareService getService return CompareService.this; Overridepublic IBinder onBindIntent intent // TODO Auto-generated stubreturn mBinder;public int IntCompareint a,int bifabreturn a;elsereturn b;五、 作业1. 简述Intent的定义和用途Intent是一个动作的完整描述,包含了动作的产生组件、接收组件和传递的数据信息。Intent为Activity、Service和BroadcastReceiver等组件提供交互能力,将一个组件的数据和动作传递给另一个组件。Intent的一个最常见的用途就是启动Activity和Service;另一个用途是在Android系统上发布广播消息,广播消息可以是接收到特定数据或消息,也可以是手机的信号变化或电池的电量过低等信息。 2. 简述Service的基本原理和用途Service能够长期在后台运行适用于无需用户干预且规则或长期运行的后台功能。首先因为Service没有用户界面更加有利于降低系统资源的消耗而且Service比Activity具有更高的优先级因此在系统资源紧张时Service不会被Android系统优先终止。即使Service被系统终止在系统资源恢复后Service也将自动恢复运行状态因此可以认为Service是在系统中永久运行的组件。Service除了可以实现后台服务功能还可以用于进程间通信Inter Process CommunicationIPC解决不同Android应用程序进程之间的调用和通讯问题。 Word 资料

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值