您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > Android编程基础实验报告三
南昌航空大学实验报告二0一三年一月六日课程名称:移动终端编程技术实验名称:Android组件通信和后台服务班级:姓名:同组人:指导教师评定:签名:一、实验目的了解使用Intent进行组件通信的原理,掌握使用Intent启动Activity的方法;掌握获取Activity返回值的方法;了解Intent过滤器的原理与匹配机制;了解Service的原理和用途;掌握进程内服务的管理方法;掌握服务的隐式启动和显式启动方法;二、实验工具Eclipse(MyEclipse)+ADT+SDK;三、实验题目1.编程实现⑴功能描述:主界面上有一个“登录”按钮,点击“登录”按钮后打开一个新的Activity;新的Activity上面有输入用户名和密码的控件,在用户关闭这个Activity后,将用户输入的用户名和密码传递到主界面中。⑵编程要点:①主界面的Activity命名为MainActivity;启动新的Activity命名为UserLoginActivity;②分别使用显示启动和隐式启动的方式,启动新的Activity;③用户名中不能出现“@”符号,同时长度不超过12个字符;密码使用密码文本显示方式,即显示为“******”,同时只能为数字;④返回的用户名和密码要以Toast的方式显示出来;⑤MainActivity和UserLoginActivity中各个生命周期的回调函数中要以方式显示日志信息。2.编程实现⑴功能描述:编程建立一个简单的进程内服务,实现比较两个整数大小的功能。服务提供IntCompare(Int,Int)函数,输入两个整数,输出较大的整数。⑵编程要点:①主界面的Activity命名为MainActivity;提供两个EditText,分别输入两个整数;提供一个Botton,启动比较过程;提供一个TextView,显示较大的整数;②分别使用启动方式和绑定方式使用Service;③分别使用Handle和AsyncTask更新TextView中的内容。四、实验步骤1.详细工程结构及部分代码(显式和隐式都在其中):结果:代码:publicclassMainActivityextendsActivity{protectedintSUBACTIVITY1=1;privatestaticStringTAG=MainActivity;Buttonbutton1,button2;publicvoidonCreate(BundlesavedInstanceState){(savedInstanceState);setContentView(TAG,(1)onCreate());button1=(Button)button2=(Button)(new(){publicvoidonClick(Viewv){Intentintent=newIntent,;(getApplicationContext(),显示启动,.show();startActivityForResult(intent,SUBACTIVITY1);}});(new(){publicvoidonClick(Viewv){Intentintent=newIntent();(getApplicationContext(),隐式启动,.show();startActivityForResult(intent,SUBACTIVITY1);}});}protectedvoidonActivityResult(intrequestCode,intresultCode,Intentdata){(requestCode,resultCode,data);if(resultCode==RESULT_OK){UriuriData=();(getApplicationContext(),(),.show();}else{(getApplicationContext(),用户名和密码为空,.show();}}@OverrideoString();Stringpass=().toString();StringuriString=用户名:+name+密码:+pass;Uridata=(uriString);Intentresult=newIntent(null,data);setResult(RESULT_OK,result);finish();}});(new(){publicvoidonClick(Viewv){*/publicstaticintmaxNum;publicstaticHandlerhandler=newHandler();privatestaticTextViewresult=null;privatestaticButtoncompare=null;privatestaticButtonreset=null;privatestaticEditTextone=null;privatestaticEditTexttwo=null;publicstaticvoidUpdateGUI(intrefreshDouble){maxNum=refreshDouble;(RefreshLable);}privatestaticRunnableRefreshLable=newRunnable(){publicvoidrun(){(maxNum));}};publicvoidonCreate(BundlesavedInstanceState){finalBundlemybundle=newBundle();(savedInstanceState);setContentViewfinalIntentintent=newIntent,;result=(EditText)findViewByIdcompare=(Button)findViewByIdreset=(Button)findViewByIdone=(EditText)findViewByIdtwo=(EditText)findViewById(newOnClickListener(){publicvoidonClick(Viewv){(one,().toString());(two,().toString());(mybundle);startService(intent);}});(newOnClickListener(){publicvoidonClick(Viewv){(null);(null);(null);}});}}publicclassCompareServiceextendsService{privateThreadworkThread;Bundlebundle=null;intone=0,two=0;publicvoidonCreate(){();workThread=newThread(null,backgroudWork,WorkThread);}@OverridepublicvoidonStart(Intentintent,intstartId){(intent,startId);bundle=();Stringc1=(one);Stringc2=(two);if(!().equals()&&!().equals()){one=(c1);two=(c2);}if(!()){();}}publicIBinderonBind(Intentintent){returnnull;}privateRunnablebackgroudWork=newRunnable(){@Overridepublicvoidrun(){intrandomDouble=IntCompare(one,two);(randomDouble);stopSelf();}};intIntCompare(inta,intb){if(a=b)returna;elsereturnb;}}(隐式启动)结果:部分代码:publicclassMainActivityextendsActivity{/**Calledwhentheactivityisfirstcreated.*/privatebooleanisBound=false;privateCompareServicecompareService;inta=0,b=0;@OverridepublicvoidonCreate(BundlesavedInstanceState){(savedInstanceState);setContentViewfinalTextViewresult=(TextView)findViewByIdButtoncompare=(Button)findViewByIdButtonreset=(Button)findViewByIdfinalEditTextone=(EditText)findViewByIdfinalEditTexttwo=(EditText)findViewByIdif(!isBound){IntentserviceIntent=newIntent,;bindService(serviceIntent,mConnection,;isBound=true;}(newOnClickListener(){publicvoidonClick(Viewv){Stringc1=().toString();Stringc2=().toString();if(!()&&!()){a=(c1);b=(c2);}(a,b)));}});(newOnClickListener(){publicvoidonClick(Viewv){(null);(null);(null);}});}privateServiceConnectionmConnection=newServiceConnection(){@OverridepublicvoidonServiceConnected(ComponentNamename,IBinderservice){etService();}@OverridepublicvoidonServiceDisconnected(ComponentNamename){//TODOAuto-generatedmethodstubcompareService=null;}};}publicclassCompareServiceextendsService{privatefinalIBindermBinder=newLocalBinder();classLocalBinderextendsBinder{CompareServicegetService(){return;}}@OverridepublicIBinderonBind(Intentintent){//TODOAuto-generatedmethodstubreturnmBinder;}publicintIntCompare(inta,intb){if(a=b)returna;elsereturnb;}}五、作业1.简述Intent的定义和用途Intent是一个动作的完整描述,包含了动作的产生组件、接收组件和传递的数据信息。Intent为Activity、Service和BroadcastReceiver等组件提供交互能力,将一个组件的数据和动作传递给另一个组件。Intent的一个最常见的用途就是启动Activity和Service;另一个用途是在Android系统上发布广播消息,广播消息可以是接收到特定数据或消息,也可以是手机的信号变化或电池的电量过低等信息。2.简述Service的基本原理和用途ServiceServiceService比ActivityService不会被Android系统优先终止。即使ServiceService此可以认为Service是在系统中永久运行的组件。ServiceInterProcessCommunicationIPCAndroid应用程序进程之间的调用和通讯问题。
本文标题:Android编程基础实验报告三
链接地址:https://www.777doc.com/doc-8569964 .html