南昌航空大学实验报告二0一三年一月六日课程名称:移动终端编程技术实验名称:Android组件通信和后台服务班级:姓名:同组人:指导教师评定:签名:一、实验目的了解使用Intent进行组件通信的原理,掌握使用Intent启动Activity的方法;掌握获取Activity返回值的方法;了解Intent过滤器的原理与匹配机制;了解Service的原理和用途;掌握进程内服务的管理方法;掌握服务的隐式启动和显式启动方法;二、实验工具Eclipse(MyEclipse)+ADT+Android2.2SDK;三、实验题目1.编程实现⑴功能描述:主界面上有一个“登录”按钮,点击“登录”按钮后打开一个新的Activity;新的Activity上面有输入用户名和密码的控件,在用户关闭这个Activity后,将用户输入的用户名和密码传递到主界面中。⑵编程要点:①主界面的Activity命名为MainActivity;启动新的Activity命名为UserLoginActivity;②分别使用显示启动和隐式启动的方式,启动新的Activity;③用户名中不能出现“@”符号,同时长度不超过12个字符;密码使用密码文本显示方式,即显示为“******”,同时只能为数字;第错误!未指定书签。页共13页④返回的用户名和密码要以Toast的方式显示出来;⑤MainActivity和UserLoginActivity中各个生命周期的回调函数中要以Log.i方式显示日志信息。2.编程实现⑴功能描述:编程建立一个简单的进程内服务,实现比较两个整数大小的功能。服务提供IntCompare(Int,Int)函数,输入两个整数,输出较大的整数。⑵编程要点:①主界面的Activity命名为MainActivity;提供两个EditText,分别输入两个整数;提供一个Botton,启动比较过程;提供一个TextView,显示较大的整数;②分别使用启动方式和绑定方式使用Service;③分别使用Handle和AsyncTask更新TextView中的内容。四、实验步骤1.详细工程结构及部分代码(显式和隐式都在其中):结果:第错误!未指定书签。页共13页代码:MainActivity.javapublicclassMainActivityextendsActivity{protectedintSUBACTIVITY1=1;privatestaticStringTAG=MainActivity;Buttonbutton1,button2;publicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);第错误!未指定书签。页共13页Log.i(TAG,(1)onCreate());button1=(Button)this.findViewById(R.id.button1);button2=(Button)this.findViewById(R.id.button2);button1.setOnClickListener(newView.OnClickListener(){publicvoidonClick(Viewv){Intentintent=newIntent(MainActivity.this,UserLoginActivity.class);Toast.makeText(getApplicationContext(),显示启动,Toast.LENGTH_SHORT).show();startActivityForResult(intent,SUBACTIVITY1);}});button2.setOnClickListener(newView.OnClickListener(){publicvoidonClick(Viewv){Intentintent=newIntent(com.example.test);Toast.makeText(getApplicationContext(),隐式启动,Toast.LENGTH_SHORT).show();startActivityForResult(intent,SUBACTIVITY1);}});}protectedvoidonActivityResult(intrequestCode,intresultCode,Intentdata){super.onActivityResult(requestCode,resultCode,data);if(resultCode==RESULT_OK){UriuriData=data.getData();Toast.makeText(getApplicationContext(),uriData.toString(),Toast.LENGTH_SHORT).show();}else{Toast.makeText(getApplicationContext(),用户名和密码为空,Toast.LENGTH_SHORT).show();}}@Override//可视生命周期开始时被调用,对用户界面进行必要的更改publicvoidonStart(){super.onStart();Log.i(TAG,(2)onStart());}@Override//在onStart()后被调用,用于恢复onSaveInstanceState()保存的用户界面信息publicvoidonRestoreInstanceState(BundlesavedInstanceState){super.onRestoreInstanceState(savedInstanceState);Log.i(TAG,(3)onRestoreInstanceState());}@Override//在活动生命周期开始时被调用,恢复被onPause()停止的用于界面更第错误!未指定书签。页共13页新的资源publicvoidonResume(){super.onResume();Log.i(TAG,(4)onResume());}@Override//在onResume()后被调用,保存界面信息publicvoidonSaveInstanceState(BundlesavedInstanceState){super.onSaveInstanceState(savedInstanceState);Log.i(TAG,(5)onSaveInstanceState());}@Override//在重新进入可视生命周期前被调用,载入界面所需要的更改信息publicvoidonRestart(){super.onRestart();Log.i(TAG,(6)onRestart());}@Override//在活动生命周期结束时被调用,用来保存持久的数据或释放占用的资源。publicvoidonPause(){super.onPause();Log.i(TAG,(7)onPause());}@Override//在可视生命周期结束时被调用,一般用来保存持久的数据或释放占用的资源publicvoidonStop(){super.onStop();Log.i(TAG,(8)onStop());}@Override//在完全生命周期结束时被调用,释放资源,包括线程、数据连接等publicvoidonDestroy(){super.onDestroy();Log.i(TAG,(9)onDestroy());}}UserLoginActivity,javapublicclassUserLoginActivityextendsActivity{EditTextusername,password;Buttonsubmit,reset;privatestaticStringTAG=MainActivity;protectedvoidonCreate(BundlesavedInstanceState){//TODOAuto-generatedmethodstubsuper.onCreate(savedInstanceState);setContentView(R.layout.login);Log.i(TAG,(1)onCreate());第错误!未指定书签。页共13页username=(EditText)this.findViewById(R.id.username);password=(EditText)this.findViewById(R.id.password);submit=(Button)this.findViewById(R.id.submit);reset=(Button)this.findViewById(R.id.reset);username.setFocusable(true);username.setOnKeyListener(newOnKeyListener(){publicbooleanonKey(Viewv,intkeyCode,KeyEventevent){//TODOAuto-generatedmethodstubintunicodeChar=event.getUnicodeChar();if(unicodeChar==64){returntrue;}elsereturnfalse;}});submit.setOnClickListener(newView.OnClickListener(){publicvoidonClick(Viewv){//TODOAuto-generatedmethodstubStringname=username.getText().toString();Stringpass=password.getText().toString();StringuriString=用户名:+name+密码:+pass;Uridata=Uri.parse(uriString);Intentresult=newIntent(null,data);setResult(RESULT_OK,result);finish();}});reset.setOnClickListener(newView.OnClickListener(){publicvoidonClick(Viewv){//TODOAuto-generatedmethodstubsetResult(RESULT_CANCELED,null);finish();}});}@Override//可视生命周期开始时被调用,对用户界面进行必要的更改publicvoidonStart(){super.onStart();Log.i(TAG,(2)onStart());}@Override//在onStart()后被调用,用于恢复onSaveInstanceState()保存的用户界面第错误!未指定书签。页共13页信息publicvoidonRestoreInstanceState(BundlesavedInstanceState){super.onRestoreInstanceState(savedInstanceState);Log.i(TAG,(3)onRestoreInstanceState());}@Override//在活动生命周期开始时被调用,恢复被onPause()停止的用于界面更新的资源publicvoidonResume(){super.onResume();Log.i(TAG,(4)onResume());}@Override//在onResume()后被调用,保存界面信息publicvoidonSaveInstanceState(BundlesavedInstanceState){super.onSaveInstanceState(savedInstanceState);Log.i(