2023年Android编程基础实验报告三_第1页
2023年Android编程基础实验报告三_第2页
2023年Android编程基础实验报告三_第3页
2023年Android编程基础实验报告三_第4页
2023年Android编程基础实验报告三_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

南昌航空大学实验报告一月六日课程名称:移动终端编程技术实验名称:Android组件通信和后台服务班级:姓名:同组人:指导教师评估:署名:一、实验目的了解使用Intent进行组件通信的原理,掌握使用Intent启动Activity的方法;掌握获取Activity返回值的方法;了解Intent过滤器的原理与匹配机制;了解Service的原理和用途;掌握进程内服务的管理方法;掌握服务的隐式启动和显式启动方法;二、实验工具Eclipse(MyEclipse)+ADT+Android2.2SDK;三、实验题目1.编程实现=1\*GB2⑴功能描述:主界面上有一个“登录”按钮,点击“登录”按钮后打开一个新的Activity;新的Activity上面有输入用户名和密码的控件,在用户关闭这个Activity后,将用户输入的用户名和密码传递到主界面中。=2\*GB2⑵编程要点:=1\*GB3①主界面的Activity命名为MainActivity;启动新的Activity命名为UserLoginActivity;=2\*GB3②分别使用显示启动和隐式启动的方式,启动新的Activity;=3\*GB3③用户名中不能出现“@”符号,同时长度不超过12个字符;密码使用密码文本显示方式,即显示为“******”,同时只能为数字;=4\*GB3④返回的用户名和密码要以Toast的方式显示出来;=5\*GB3⑤MainActivity和UserLoginActivity中各个生命周期的回调函数中要以Log.i方式显示日记信息。2.编程实现=1\*GB2⑴功能描述:编程建立一个简朴的进程内服务,实现比较两个整数大小的功能。服务提供IntCompare(Int,Int)函数,输入两个整数,输出较大的整数。=2\*GB2⑵编程要点:=1\*GB3①主界面的Activity命名为MainActivity;提供两个EditText,分别输入两个整数;提供一个Botton,启动比较过程;提供一个TextView,显示较大的整数;=2\*GB3②分别使用启动方式和绑定方式使用Service;=3\*GB3③分别使用Handle和AsyncTask更新TextView中的内容。实验环节具体工程结构及部分代码(显式和隐式都在其中):结果:代码:MainActivity.javapublicclassMainActivityextendsActivity{ protectedintSUBACTIVITY1=1; privatestaticStringTAG="MainActivity";ﻩButtonbutton1,button2; publicvoidonCreate(BundlesavedInstanceState){ﻩ super.onCreate(savedInstanceState); ﻩsetContentView(R.layout.main);ﻩ 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()停止的用于界面更新的资源ﻩ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-generatedmethodstub ﻩsuper.onCreate(savedInstanceState); ﻩsetContentView(R.layout.login);ﻩﻩLog.i(TAG,"(1)onCreate()");ﻩ 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-generatedmethodstubﻩﻩ ﻩintunicodeChar=event.getUnicodeChar(); ﻩﻩﻩif(unicodeChar==64) ﻩﻩ { returntrue;ﻩﻩ ﻩ}ﻩ ﻩ else ﻩ ﻩreturnfalse;ﻩ }}); ﻩsubmit.setOnClickListener(newView.OnClickListener(){ ﻩﻩ ﻩﻩpublicvoidonClick(Viewv){ﻩ ﻩ//TODOAuto-generatedmethodstubﻩﻩ ﻩStringname=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-generatedmethodstubﻩ ﻩsetResult(RESULT_CANCELED,null); ﻩﻩfinish(); ﻩ }ﻩﻩ});ﻩ} @Override//可视生命周期开始时被调用,对用户界面进行必要的更改ﻩpublicvoidonStart(){ super.onStart(); Log.i(TAG,"(2)onStart()"); } @Override//在onStart()后被调用,用于恢复onSaveInstanceState()保存的用户界面信息 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(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()"); }}具体工程结构及部分代码(显式和隐式都在其中):(显式启动)结果:部分代码:MainActivity.javapublicclassMainActivityextendsActivity{/**Calledwhentheactivityisfirstcreated.*/ publicstaticintmaxNum; publicstaticHandlerhandler=newHandler(); privatestaticTextViewresult=null; privatestaticButtoncompare=null; privatestaticButtonreset=null;ﻩprivatestaticEditTextone=null;ﻩprivatestaticEditTexttwo=null;ﻩpublicstaticvoidUpdateGUI(intrefreshDouble){ﻩﻩmaxNum=refreshDouble; handler.post(RefreshLable); } privatestaticRunnableRefreshLable=newRunnable(){ ﻩpublicvoidrun(){ﻩ result.setText(String.valueOf(maxNum)); ﻩ}};publicvoidonCreate(BundlesavedInstanceState){ finalBundlemybundle=newBundle();super.onCreate(savedInstanceState);setContentView(R.layout.main);finalIntentintent=newIntent(MainActivity.this,CompareService.class);result=(EditText)findViewById(R.id.result);compare=(Button)findViewById(R.id.compare);reset=(Button)findViewById(R.id.reset);one=(EditText)findViewById(R.id.one);two=(EditText)findViewById(R.id.two);compare.setOnClickListener(newOnClickListener(){publicvoidonClick(Viewv){ mybundle.putString("one",one.getText().toString());ﻩﻩmybundle.putString("two",two.getText().toString()); ﻩintent.putExtras(mybundle); startService(intent); ﻩ }});reset.setOnClickListener(newOnClickListener(){publicvoidonClick(Viewv){ ﻩ one.setText(null); ﻩ two.setText(null); ﻩ ﻩresult.setText(null); ﻩﻩ}});}}CompareService.javapublicclassCompareServiceextendsService{ﻩprivateThreadworkThread;ﻩBundlebundle=null; intone=0,two=0;ﻩpublicvoidonCreate(){ﻩsuper.onCreate();ﻩworkThread=newThread(null,backgroudWork,"WorkThread"); }ﻩ@OverrideﻩpublicvoidonStart(Intentintent,intstartId){ super.onStart(intent,startId);ﻩbundle=intent.getExtras(); Stringc1=bundle.getString("one"); Stringc2=bundle.getString("two");ﻩif(!c1.toString().equals("")&&!c2.toString().equals("")){ﻩﻩone=Integer.parseInt(c1); ﻩtwo=Integer.parseInt(c2);ﻩ} if(!workThread.isAlive()){ ﻩworkThread.start(); }ﻩ}ﻩﻩpublicIBinderonBind(Intentintent){ returnnull; }ﻩprivateRunnablebackgroudWork=newRunnable(){ﻩﻩ@Override publicvoidrun(){ ﻩ ﻩﻩ intrandomDouble=IntCompare(one,two);ﻩﻩﻩ ﻩMainActivity.UpdateGUI(randomDouble);ﻩﻩﻩ stopSelf();ﻩﻩ}ﻩ}; intIntCompare(inta,intb){ if(a>=b) ﻩreturna; ﻩelseﻩ ﻩreturnb;ﻩ}}(隐式启动)结果:部分代码:MainActivity.javapublicclassMainActivityextendsActivity{/**Calledwhentheactivityisfirstcreated.*/ privatebooleanisBound=false;ﻩprivateCompareServicecompareService; inta=0,b=0;@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);finalTextViewresult=(TextView)findViewById(R.id.result);Buttoncompare=(Button)findViewById(R.id.compare);Buttonreset=(Button)findViewById(R.id.reset);finalEditTextone=(EditText)findViewById(R.id.one);finalEditTexttwo=(EditText)findViewById(R.id.two);if(!isBound){ﻩﻩ IntentserviceIntent=newIntent(MainActivity.this,CompareService.class); bindService(serviceIntent,mConnection,Context.BIND_AUTO_CREATE); isBound=true; ﻩ}compare.setOnClickListener(newOnClickListener(){ﻩﻩﻩpublicvoidonClick(Viewv){ﻩ ﻩﻩ ﻩStringc1=one.getText().toString();ﻩ ﻩﻩStringc2=two.getText().toString(); ﻩ if(!c1.equals("")&&!c2.equals("")){ﻩﻩﻩ a=Integer.parseInt(c1); ﻩﻩ b=Integer.parseInt(c2); ﻩ }ﻩﻩﻩ result.setText(String.valueOf(compareService.IntCompare(a,b))); ﻩ }});reset.setOnClickListener(newOnClickListener(){publicvoidonClick(Viewv){ﻩﻩﻩ one.setText(null);ﻩ two.setText(null); ﻩresult.setText(null);ﻩﻩﻩ}});}privateServiceConnectionmConnection=newServiceConnection(){ @OverrideﻩﻩpublicvoidonServiceConnected(ComponentNamenam

温馨提示

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

评论

0/150

提交评论