




下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、南昌航空大學(xué)實(shí)驗(yàn)報(bào)告二0一三年一月六日 課程名稱:移動(dòng)終端編程技術(shù)實(shí)驗(yàn)名稱: Android組件通信和后臺(tái)服務(wù)班級(jí):姓名:同組人:指導(dǎo)教師評(píng)定:簽名:一、實(shí)驗(yàn)?zāi)康牧私馐褂肐ntent進(jìn)行組件通信的原理,掌握使用 Intent啟動(dòng)Activity的方法;掌握獲取Activity返回值的方法;了解Intent過(guò)濾器的原理與匹配機(jī)制;了解Service的原理和用途;掌握進(jìn)程內(nèi)服務(wù)的管理方法;掌握服務(wù)的隱式啟動(dòng)和顯式啟動(dòng)方法;二、實(shí)驗(yàn)工具Eclipse ( MyEclipse ) + ADT + Android2.2 SDK ;三、實(shí)驗(yàn)題目1.編程實(shí)現(xiàn)功能描述:主界面上有一個(gè)“登錄”按鈕,點(diǎn)擊“登錄”
2、按鈕后打開一個(gè)新的Activity ;新的Activity上面有輸入用戶名和密碼的控件,在用戶關(guān)閉這個(gè)Activity 后,將用戶輸入的用戶名和密碼傳遞到主界面中。編程要點(diǎn):主界面 的 Activity 命名為 MainActivity ; 啟動(dòng)新的 Activity 命名為 UserLoginActivity ;分別使用顯示啟動(dòng)和隱式啟動(dòng)的方式,啟動(dòng)新的Activity ;用戶名中不能出現(xiàn)“ 符號(hào),同時(shí)長(zhǎng)度不超過(guò)12個(gè)字符;密碼使用密碼文本顯示方式,即顯示為“ * ”,同時(shí)只能為數(shù)字; 返回的用戶名和密碼要以Toast的方式顯示出來(lái); MainActivity 和 UserLoginActi
3、vity 中各個(gè)生命周期的回調(diào)函數(shù)中要以Log.i 方式顯示日志信息。2. 編程實(shí)現(xiàn) 功能描述:編程建立一個(gè)簡(jiǎn)單的進(jìn)程內(nèi)服務(wù),實(shí)現(xiàn)比較兩個(gè)整數(shù)大小的功能。服務(wù)提供 IntCompare(Int, Int) 函數(shù),輸入兩個(gè)整數(shù),輸出較大的整數(shù)。 編程要點(diǎn):主界面的Activity命名為 MainActivity ;提供兩個(gè)EditText ,分別輸入兩個(gè)整數(shù);提供一個(gè)Botton ,啟動(dòng)比較過(guò)程;提供一個(gè)TextView ,顯示較大的整數(shù);分別使用啟動(dòng)方式和綁定方式使用Service ;分別使用Handle 和 AsyncTask 更新 TextView 中的內(nèi)容。四、 實(shí)驗(yàn)步驟1. 詳細(xì)工程結(jié)
4、構(gòu)及部分代碼(顯式和隱式都在其中):結(jié)果:代碼:MainActivity.javapublic class MainActivity extends Activity protected int SUBACTIVITY1 = 1;private static String TAG = "MainActivity"Button button1,button2;public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);setContentView(R.layout.mai
5、n);Log.i(TAG, "(1) onCreate()");button1 = (Button) this.findViewById(R.id.button1);button2 = (Button) this.findViewById(R.id.button2);button1.setOnClickListener(new View.OnClickListener() public void onClick(View v) Intent intent = newIntent(MainActivity.this,UserLoginActivity.class);Toast
6、.makeText(getApplicationContext(), "顯示啟動(dòng)",Toast.LENGTH_SHORT).show();startActivityForResult(intent, SUBACTIVITY1););button2.setOnClickListener(new View.OnClickListener()public void onClick(View v) Intent intent = new Intent("com.example.test");Toast.makeText(getApplicationContext
7、(), "隱式啟動(dòng)",Toast.LENGTH_SHORT).show();startActivityForResult(intent, SUBACTIVITY1););protected void onActivityResult(int requestCode, int resultCode, Intent data) super.onActivityResult(requestCode, resultCode, data);if (resultCode = RESULT_OK) Uri uriData = data.getData();Toast.makeText(g
8、etApplicationContext(), uriData.toString(),Toast.LENGTH_SHORT).show(); else Toast.makeText(getApplicationContext(), "用戶名和密碼為空",Toast.LENGTH_SHORT).show();Override / 可視生命周期開始時(shí)被調(diào)用,對(duì)用戶界面進(jìn)行必要的更改public void onStart() super.onStart();Log.i(TAG, "(2) onStart()");Override / 在 onStart() 后
9、被調(diào)用,用于恢復(fù)onSaveInstanceState() 保存的用戶界面信息public void onRestoreInstanceState(Bundle savedInstanceState) super.onRestoreInstanceState(savedInstanceState);Log.i(TAG, "(3) onRestoreInstanceState()");Override / 在活動(dòng)生命周期開始時(shí)被調(diào)用,恢復(fù)被onPause() 停止的用于界面更新的資源public void onResume() super.onResume();Log.i(T
10、AG, "(4) onResume()");Override / 在onResume()后被調(diào)用,保存界面信息public void onSaveInstanceState(Bundle savedInstanceState) super.onSaveInstanceState(savedInstanceState);Log.i(TAG, "(5) onSaveInstanceState()");Override / 在重新進(jìn)入可視生命周期前被調(diào)用,載入界面所需要的更改信息public void onRestart() super.onRestart()
11、;Log.i(TAG, "(6) onRestart()");Override / 在活動(dòng)生命周期結(jié)束時(shí)被調(diào)用,用來(lái)保存持久的數(shù)據(jù)或釋放占用的資源。public void onPause() super.onPause();Log.i(TAG, "(7) onPause()");Override / 在可視生命周期結(jié)束時(shí)被調(diào)用,一般用來(lái)保存持久的數(shù)據(jù)或釋放占用的資源public void onStop() super.onStop();Log.i(TAG, "(8) onStop()");Override / 在完全生命周期結(jié)束時(shí)被調(diào)
12、用,釋放資源,包括線程、數(shù)據(jù)連接等public void onDestroy() super.onDestroy();Log.i(TAG, "(9) onDestroy()");UserLoginActivity,java public class UserLoginActivity extends Activity EditText username,password;Button submit,reset;private static String TAG = "MainActivity"protected void onCreate(Bundle
13、savedInstanceState) / TODO Auto-generated method stub 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.i
14、d.submit);reset=(Button)this.findViewById(R.id.reset);username.setFocusable(true);username.setOnKeyListener(new OnKeyListener()public boolean onKey(View v, int keyCode, KeyEvent event) / TODO Auto-generated method stub int unicodeChar = event.getUnicodeChar(); if(unicodeChar= 64)return true;elseretu
15、rn false;);submit.setOnClickListener(new View.OnClickListener() public void onClick(View v) / TODO Auto-generated method stubString name =username.getText().toString();String pass=password.getText().toString();String uriString="用戶名:"+name+"密碼:"+pass;Uri data = Uri.parse(uriString
16、);Intent result = new Intent(null, data);setResult(RESULT_OK, result);finish(););reset.setOnClickListener(new View.OnClickListener() public void onClick(View v) / TODO Auto-generated method stub setResult(RESULT_CANCELED, null);finish(););Override / 可視生命周期開始時(shí)被調(diào)用,對(duì)用戶界面進(jìn)行必要的更改public void onStart() sup
17、er.onStart();Log.i(TAG, "(2) onStart()");Override / 在 onStart() 后被調(diào)用,用于恢復(fù)onSaveInstanceState() 保存的用戶界面信息public void onRestoreInstanceState(Bundle savedInstanceState) super.onRestoreInstanceState(savedInstanceState);Log.i(TAG, "(3) onRestoreInstanceState()");Override / 在活動(dòng)生命周期開始時(shí)被
18、調(diào)用,恢復(fù)被onPause() 停止的用于界面更新的資源public void onResume() super.onResume();Log.i(TAG, "(4) onResume()");Override / 在onResume()后被調(diào)用,保存界面信息public void onSaveInstanceState(Bundle savedInstanceState) super.onSaveInstanceState(savedInstanceState);Log.i(TAG, "(5) onSaveInstanceState()");Overr
19、ide / 在重新進(jìn)入可視生命周期前被調(diào)用,載入界面所需要的更改信息public void onRestart() super.onRestart();Log.i(TAG, "(6) onRestart()");Override / 在活動(dòng)生命周期結(jié)束時(shí)被調(diào)用,用來(lái)保存持久的數(shù)據(jù)或釋放占用的 資源。public void onPause() super.onPause();Log.i(TAG, "(7) onPause()");Override / 在可視生命周期結(jié)束時(shí)被調(diào)用,一般用來(lái)保存持久的數(shù)據(jù)或釋放占用的資源public void onStop()
20、 super.onStop();Log.i(TAG, "(8) onStop()");Override / 在完全生命周期結(jié)束時(shí)被調(diào)用,釋放資源,包括線程、數(shù)據(jù)連接等public void onDestroy() super.onDestroy();Log.i(TAG, "(9) onDestroy()");2. 詳細(xì)工程結(jié)構(gòu)及部分代碼(顯式和隱式都在其中):( 顯式啟動(dòng))結(jié)果:部分代碼:MainActivity.javapublic class MainActivity extends Activity /* Called when the activ
21、ity is first created. */public static int maxNum;public static Handler handler=new Handler();private static TextView result=null;private static Button compare=null;private static Button reset=null;private static EditText one=null;private static EditText two=null;public static void UpdateGUI(int refr
22、eshDouble) maxNum=refreshDouble;handler.post(RefreshLable);private static Runnable RefreshLable=new Runnable() public void run() result.setText(String.valueOf(maxNum);public void onCreate(Bundle savedInstanceState) final Bundle mybundle=new Bundle();super.onCreate(savedInstanceState);setContentView(
23、R.layout.main);final Intent intent=newIntent(MainActivity.this,CompareService.class);result=(EditText)findViewById(R.id.result);compare=(Button)findViewById(Rpare);reset=(Button)findViewById(R.id.reset);one=(EditText)findViewById(R.id.one);two=(EditText)findViewById(R.id.two);compare.setOnClickListe
24、ner(new OnClickListener()public void onClick(View v) mybundle.putString("one", one.getText().toString();mybundle.putString("two", two.getText().toString();intent.putExtras(mybundle);startService(intent););reset.setOnClickListener(new OnClickListener()public void onClick(View v) o
25、ne.setText(null);two.setText(null); result.setText(null););CompareService.javapublic class CompareService extends Service private Thread workThread;Bundle bundle=null;int one=0,two=0;public void onCreate() super.onCreate();workThread = new Thread(null,backgroudWork,"WorkThread");Overridepu
26、blic void onStart(Intent intent, int startId) super.onStart(intent, startId);bundle=intent.getExtras();String c1=bundle.getString("one");String c2=bundle.getString("two");if(!c1.toString().equals("")&&!c2.toString().equals("")one=Integer.parseInt(c1);t
27、wo=Integer.parseInt(c2);if (!workThread.isAlive() workThread.start();public IBinder onBind(Intent intent) return null;private Runnable backgroudWork = new Runnable() Overridepublic void run() int randomDouble =IntCompare(one,two);MainActivity.UpdateGUI(randomDouble); stopSelf();int IntCompare(int a,
28、int b)if(a>=b)return a;elsereturn b;( 隱式啟動(dòng))結(jié)果:部分代碼:MainActivity.javapublic class MainActivity extends Activity /* Called when the activity is first created. */private boolean isBound = false;private CompareService compareService;int a=0,b=0;Overridepublic void onCreate(Bundle savedInstanceState)
29、super.onCreate(savedInstanceState);setContentView(R.layout.main);final TextView result=(TextView)findViewById(R.id.result);Button compare=(Button)findViewById(Rpare);Button reset=(Button)findViewById(R.id.reset);final EditText one=(EditText)findViewById(R.id.one);final EditText two=(EditText)findVie
30、wById(R.id.two);if(!isBound)Intent serviceIntent=newIntent(MainActivity.this,CompareService.class);bindService(serviceIntent,mConnection,Context.BIND_AUTO_CREATE); isBound=true;compare.setOnClickListener(new OnClickListener()public void onClick(View v) String c1=one.getText().toString();String c2=tw
31、o.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(new OnClickListener()public void onClick(View v) one.setText(null);two.setText(null);result.setText(null););private ServiceConnection mConnection=new ServiceConnection()Overridepublic void onServiceConnected(ComponentName name, IBinder service) / TODO Auto-generated method stubcompareService=(CompareService.LocalBinder)servic
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 餐飲業(yè)食品安全管理體系認(rèn)證合同
- 小米c面試題及答案
- 市容環(huán)衛(wèi)外包方案
- 輕工產(chǎn)品倉(cāng)儲(chǔ)倉(cāng)單質(zhì)押擔(dān)保協(xié)議
- 汽車售后服務(wù)網(wǎng)點(diǎn)車輛訂購(gòu)及維修服務(wù)合同
- 社區(qū)改造設(shè)計(jì)建筑方案
- 生態(tài)造林工程投標(biāo)方案
- 黨章知識(shí)課件
- 數(shù)學(xué)小升初面試題及答案
- 體育協(xié)會(huì)換屆方案
- 橡膠制品在電力電氣行業(yè)中的應(yīng)用研究
- 《動(dòng)態(tài)流量平衡閥》課件
- 跨境電商的法規(guī)和政策解讀與分析
- 電子科技大學(xué)《移動(dòng)通信原理》第七章IS95及其增強(qiáng)移
- 國(guó)家中小學(xué)智慧教育平臺(tái)培訓(xùn)專題講座
- 7個(gè)生活中溝通成功案例 3篇
- 《得道多助-失道寡助》對(duì)比閱讀6篇(含答案)
- 汽車制造質(zhì)量管理與控制課件:零部件開發(fā)階段的質(zhì)量管理
- -2024屆高考英語(yǔ)二輪復(fù)習(xí):讀后續(xù)寫適用句型-定語(yǔ)從句課件
- 糧油、調(diào)料配送投標(biāo)方案(技術(shù)標(biāo))
- 板式換熱器、半容積式換熱器換熱器面積計(jì)算表(自動(dòng)計(jì)算)
評(píng)論
0/150
提交評(píng)論