2023年Android編程基礎實驗報告三_第1頁
2023年Android編程基礎實驗報告三_第2頁
2023年Android編程基礎實驗報告三_第3頁
2023年Android編程基礎實驗報告三_第4頁
2023年Android編程基礎實驗報告三_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

南昌航空大學實驗報告一月六日課程名稱:移動終端編程技術實驗名稱: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中的內容。實驗環(huán)節(jié)具體工程結構及部分代碼(顯式和隱式都在其中):結果:代碼:MainActivity.javapublicclassMainActivityextendsActivity{ 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(),"顯示啟動",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){? 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//可視生命周期開始時被調用,對用戶界面進行必要的更改?publicvoidonStart(){ super.onStart();?Log.i(TAG,"(2)onStart()"); } @Override//在onStart()后被調用,用于恢復onSaveInstanceState()保存的用戶界面信息?publicvoidonRestoreInstanceState(BundlesavedInstanceState){ super.onRestoreInstanceStat(yī)e(savedInstanceState);?Log.i(TAG,"(3)onRestoreInstanceStat(yī)e()");?}?@Override//在活動生命周期開始時被調用,恢復被onPause()停止的用于界面更新的資源?publicvoidonResume(){ super.onResume();?Log.i(TAG,"(4)onResume()");?}?@Override//在onResume()后被調用,保存界面信息 publicvoidonSaveInstanceStat(yī)e(BundlesavedInstanceState){ super.onSaveInstanceStat(yī)e(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)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){? ?//TODOAuto-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//可視生命周期開始時被調用,對用戶界面進行必要的更改?publicvoidonStart(){ super.onStart(); Log.i(TAG,"(2)onStart()"); } @Override//在onStart()后被調用,用于恢復onSaveInstanceStat(yī)e()保存的用戶界面信息 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{/**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; }?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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論