2023年Android編程基礎(chǔ)實(shí)驗(yàn)報(bào)告三_第1頁
2023年Android編程基礎(chǔ)實(shí)驗(yàn)報(bào)告三_第2頁
2023年Android編程基礎(chǔ)實(shí)驗(yàn)報(bào)告三_第3頁
2023年Android編程基礎(chǔ)實(shí)驗(yàn)報(bào)告三_第4頁
2023年Android編程基礎(chǔ)實(shí)驗(yàn)報(bào)告三_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

南昌航空大學(xué)實(shí)驗(yàn)報(bào)告一月六日課程名稱:移動(dòng)終端編程技術(shù)實(shí)驗(yàn)名稱:Android組件通信和后臺(tái)服務(wù)班級(jí):姓名:同組人:指導(dǎo)教師評(píng)估:署名:一、實(shí)驗(yàn)?zāi)康牧私馐褂茫蒼tent進(jìn)行組件通信的原理,掌握使用Intent啟動(dòng)Activity的方法;掌握獲取Activity返回值的方法;了解Intent過濾器的原理與匹配機(jī)制;了解Service的原理和用途;掌握進(jìn)程內(nèi)服務(wù)的管理方法;掌握服務(wù)的隱式啟動(dòng)和顯式啟動(dòng)方法;二、實(shí)驗(yàn)工具Eclipse(MyEclipse)+ADT+Android2.2SDK;三、實(shí)驗(yàn)題目1.編程實(shí)現(xiàn)=1\*GB2⑴功能描述:主界面上有一個(gè)“登錄”按鈕,點(diǎn)擊“登錄”按鈕后打開一個(gè)新的Activity;新的Activity上面有輸入用戶名和密碼的控件,在用戶關(guān)閉這個(gè)Activity后,將用戶輸入的用戶名和密碼傳遞到主界面中。=2\*GB2⑵編程要點(diǎn):=1\*GB3①主界面的Activity命名為MainActivity;啟動(dòng)新的Activity命名為UserLoginActivity;=2\*GB3②分別使用顯示啟動(dòng)和隱式啟動(dòng)的方式,啟動(dòng)新的Activity;=3\*GB3③用戶名中不能出現(xiàn)“@”符號(hào),同時(shí)長(zhǎng)度不超過12個(gè)字符;密碼使用密碼文本顯示方式,即顯示為“******”,同時(shí)只能為數(shù)字;=4\*GB3④返回的用戶名和密碼要以Toast的方式顯示出來;=5\*GB3⑤MainActivity和UserLoginA(yù)ctivity中各個(gè)生命周期的回調(diào)函數(shù)中要以Log.i方式顯示日記信息。2.編程實(shí)現(xiàn)=1\*GB2⑴功能描述:編程建立一個(gè)簡(jiǎn)樸的進(jìn)程內(nèi)服務(wù),實(shí)現(xiàn)比較兩個(gè)整數(shù)大小的功能。服務(wù)提供IntCompare(Int,Int)函數(shù),輸入兩個(gè)整數(shù),輸出較大的整數(shù)。=2\*GB2⑵編程要點(diǎn):=1\*GB3①主界面的Activity命名為MainActivity;提供兩個(gè)EditText,分別輸入兩個(gè)整數(shù);提供一個(gè)Botton,啟動(dòng)比較過程;提供一個(gè)TextView,顯示較大的整數(shù);=2\*GB3②分別使用啟動(dòng)方式和綁定方式使用Service;=3\*GB3③分別使用Handle和AsyncTask更新TextView中的內(nèi)容。實(shí)驗(yàn)環(huán)節(jié)具體工程結(jié)構(gòu)及部分代碼(顯式和隱式都在其中):結(jié)果:代碼:MainActivity.javapublicclassMainA(yù)ctivityextendsActivity{ protectedintSUBACTIVITY1=1; privatestaticStringTAG="MainActivity";?Buttonbutton1,button2; publicvoidonCreat(yī)e(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(),"顯示啟動(dòng)",Toast.LENGTH_SHORT).show(); ?? startActivityForResult(intent,SUBACTIVITY1); ? }});??button2.setOnClickListener(newView.OnClickListener(){ ??publicvoidonClick(Viewv){????Intentintent=newIntent("com.example.test"); ? Toast.makeText(getApplicationContext(),"隱式啟動(dòng)",Toast.LENGTH_SHORT).show(); ???startActivityForResult(intent,SUBACTIVITY1);???}}); } protectedvoidonActivityResult(intrequestCode,intresultCode,Intentdata){ super.onA(yù)ctivityResult(requestCode,resultCode,data);??if(resultCode==RESULT_OK){? UriuriDat(yī)a=data.getData(); Toast.makeText(getApplicationContext(),uriData.toString(),?? Toast.LENGTH_SHORT).show();? }else{?? Toast.makeText(getApplicat(yī)ionContext(),"用戶名和密碼為空",Toast.LENGTH_SHORT) ? .show(); ?}?} @Override//可視生命周期開始時(shí)被調(diào)用,對(duì)用戶界面進(jìn)行必要的更改?publicvoidonStart(){ super.onStart();?Log.i(TAG,"(2)onStart()"); } @Override//在onStart()后被調(diào)用,用于恢復(fù)onSaveInstanceState()保存的用戶界面信息?publicvoidonRestoreInstanceState(BundlesavedInstanceState){ super.onRestoreInstanceStat(yī)e(savedInstanceState);?Log.i(TAG,"(3)onRestoreInstanceStat(yī)e()");?}?@Override//在活動(dòng)生命周期開始時(shí)被調(diào)用,恢復(fù)被onPause()停止的用于界面更新的資源?publicvoidonResume(){ super.onResume();?Log.i(TAG,"(4)onResume()");?}?@Override//在onResume()后被調(diào)用,保存界面信息 publicvoidonSaveInstanceStat(yī)e(BundlesavedInstanceState){ super.onSaveInstanceStat(yī)e(savedInstanceState); Log.i(TAG,"(5)onSaveInstanceState()"); }?@Override//在重新進(jìn)入可視生命周期前被調(diào)用,載入界面所需要的更改信息?publicvoidonRestart(){ super.onRestart();?Log.i(TAG,"(6)onRestart()");?}?@Override//在活動(dòng)生命周期結(jié)束時(shí)被調(diào)用,用來保存持久的數(shù)據(jù)或釋放占用的資源。 publicvoidonPause(){ super.onPause(); Log.i(TAG,"(7)onPause()"); }?@Override//在可視生命周期結(jié)束時(shí)被調(diào)用,一般用來保存持久的數(shù)據(jù)或釋放占用的資源 publicvoidonStop(){?super.onStop(); Log.i(TAG,"(8)onStop()"); }?@Override//在完全生命周期結(jié)束時(shí)被調(diào)用,釋放資源,涉及線程、數(shù)據(jù)連接等 publicvoidonDestroy(){?super.onDestroy();?Log.i(TAG,"(9)onDestroy()");?}}UserLoginActivity,javapublicclassUserLoginActivityextendsActivity{?EditTextusername,password;?Buttonsubmit,reset;?privatestaticStringTAG="MainA(yù)ctivity"; protectedvoidonCreate(BundlesavedInstanceState){ //TODOAuto-generatedmethodstub ?super.onCreate(savedInstanceState); ?setContentView(R.layout.login);??Log.i(TAG,"(1)onCreat(yī)e()");? 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){? ?//TO(shè)DOAuto-generatedmethodstub?? ?Stringname=username.getText().toString(); ?Stringpass=password.getText().toString();??? StringuriString="用戶名:"+name+"密碼:"+pass;??Uridat(yī)a=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//可視生命周期開始時(shí)被調(diào)用,對(duì)用戶界面進(jìn)行必要的更改?publicvoidonStart(){ super.onStart(); Log.i(TAG,"(2)onStart()"); } @Override//在onStart()后被調(diào)用,用于恢復(fù)onSaveInstanceStat(yī)e()保存的用戶界面信息 publicvoidonRestoreInstanceState(BundlesavedInstanceState){?super.onRestoreInstanceState(savedInstanceState);?Log.i(TAG,"(3)onRestoreInstanceState()"); }?@Override//在活動(dòng)生命周期開始時(shí)被調(diào)用,恢復(fù)被onPause()停止的用于界面更新的資源?publicvoidonResume(){?super.onResume(); Log.i(TAG,"(4)onResume()");?}?@Override//在onResume()后被調(diào)用,保存界面信息 publicvoidonSaveInstanceState(BundlesavedInstanceState){?super.onSaveInstanceState(savedInstanceState);?Log.i(TAG,"(5)onSaveInstanceState()");?}?@Override//在重新進(jìn)入可視生命周期前被調(diào)用,載入界面所需要的更改信息 publicvoidonRestart(){ super.onRestart(); Log.i(TAG,"(6)onRestart()");?} @Override//在活動(dòng)生命周期結(jié)束時(shí)被調(diào)用,用來保存持久的數(shù)據(jù)或釋放占用的資源。?publicvoidonPause(){ super.onPause();?Log.i(TAG,"(7)onPause()"); } @Override//在可視生命周期結(jié)束時(shí)被調(diào)用,一般用來保存持久的數(shù)據(jù)或釋放占用的資源?publicvoidonStop(){ super.onStop();?Log.i(TAG,"(8)onStop()"); }?@Override//在完全生命周期結(jié)束時(shí)被調(diào)用,釋放資源,涉及線程、數(shù)據(jù)連接等?publicvoidonDestroy(){?super.onDestroy(); Log.i(TAG,"(9)onDestroy()"); }}具體工程結(jié)構(gòu)及部分代碼(顯式和隱式都在其中):(顯式啟動(dòng))結(jié)果:部分代碼:MainActivity.javapublicclassMainActivityextendsActivity{/**Calledwhentheactivityisfirstcreat(yī)ed.*/ publicstaticintmaxNum; publicstaticHandlerhandler=newHandler(); privatestaticTextViewresult=null; privatestaticButtoncompare=null; privat(yī)estaticButtonreset=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; }?privateRunnablebackgroudWo(hù)rk=newRunnable(){??@Override publicvoidrun(){ ? ?? intrandomDouble=IntCompare(one,two);??? ?MainActivity.UpdateGUI(randomDouble);??? stopSelf();??}?}; intIntCompare(inta,intb){ if(a>=b) ?returna; ?else? ?returnb;?}}(隱式啟動(dòng))結(jié)果:部分代碼:MainActivity.javapublicclassMainA(yù)ctivityextendsActivity{/**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(MainA(yù)ctivity.this,CompareService.class); bindService(serviceIntent,mConnection,Context.BIND_AUTO(shè)_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等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論