版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、南昌航空大學(xué)實驗報告二0一三年一月六日 課程名稱:移動終端編程技術(shù)實驗名稱: Android組件通信和后臺服務(wù)班級:姓名:同組人:指導(dǎo)教師評定:簽名:一、實驗?zāi)康牧私馐褂肐ntent進(jìn)行組件通信的原理,掌握使用 Intent啟動Activity的方法;掌握獲取Activity返回值的方法;了解Intent過濾器的原理與匹配機(jī)制;了解Service的原理和用途;掌握進(jìn)程內(nèi)服務(wù)的管理方法;掌握服務(wù)的隱式啟動和顯式啟動方法;二、實驗工具Eclipse ( MyEclipse ) + ADT + Android2.2 SDK ;三、實驗題目1.編程實現(xiàn)功能描述:主界面上有一個“登錄”按鈕,點擊“登錄”
2、按鈕后打開一個新的Activity ;新的Activity上面有輸入用戶名和密碼的控件,在用戶關(guān)閉這個Activity 后,將用戶輸入的用戶名和密碼傳遞到主界面中。編程要點:主界面 的 Activity 命名為 MainActivity ; 啟動新的 Activity 命名為 UserLoginActivity ;分別使用顯示啟動和隱式啟動的方式,啟動新的Activity ;用戶名中不能出現(xiàn)“ 符號,同時長度不超過12個字符;密碼使用密碼文本顯示方式,即顯示為“ * ”,同時只能為數(shù)字; 返回的用戶名和密碼要以Toast的方式顯示出來; MainActivity 和 UserLoginActi
3、vity 中各個生命周期的回調(diào)函數(shù)中要以Log.i 方式顯示日志信息。2. 編程實現(xiàn) 功能描述:編程建立一個簡單的進(jìn)程內(nèi)服務(wù),實現(xiàn)比較兩個整數(shù)大小的功能。服務(wù)提供 IntCompare(Int, Int) 函數(shù),輸入兩個整數(shù),輸出較大的整數(shù)。 編程要點:主界面的Activity命名為 MainActivity ;提供兩個EditText ,分別輸入兩個整數(shù);提供一個Botton ,啟動比較過程;提供一個TextView ,顯示較大的整數(shù);分別使用啟動方式和綁定方式使用Service ;分別使用Handle 和 AsyncTask 更新 TextView 中的內(nèi)容。四、 實驗步驟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(), "顯示啟動",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、(), "隱式啟動",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 / 可視生命周期開始時被調(diào)用,對用戶界面進(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 / 在活動生命周期開始時被調(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 / 在活動生命周期結(jié)束時被調(diào)用,用來保存持久的數(shù)據(jù)或釋放占用的資源。public void onPause() super.onPause();Log.i(TAG, "(7) onPause()");Override / 在可視生命周期結(jié)束時被調(diào)用,一般用來保存持久的數(shù)據(jù)或釋放占用的資源public void onStop() super.onStop();Log.i(TAG, "(8) onStop()");Override / 在完全生命周期結(jié)束時被調(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 / 可視生命周期開始時被調(diào)用,對用戶界面進(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 / 在活動生命周期開始時被
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 / 在活動生命周期結(jié)束時被調(diào)用,用來保存持久的數(shù)據(jù)或釋放占用的 資源。public void onPause() super.onPause();Log.i(TAG, "(7) onPause()");Override / 在可視生命周期結(jié)束時被調(diào)用,一般用來保存持久的數(shù)據(jù)或釋放占用的資源public void onStop()
20、 super.onStop();Log.i(TAG, "(8) onStop()");Override / 在完全生命周期結(jié)束時被調(diào)用,釋放資源,包括線程、數(shù)據(jù)連接等public void onDestroy() super.onDestroy();Log.i(TAG, "(9) onDestroy()");2. 詳細(xì)工程結(jié)構(gòu)及部分代碼(顯式和隱式都在其中):( 顯式啟動)結(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;( 隱式啟動)結(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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年考古發(fā)掘項目土方清理與保護(hù)合同3篇
- 2025版信息安全保密協(xié)議合同5篇
- 二零二五年房地產(chǎn)項目配套基礎(chǔ)設(shè)施建設(shè)合同3篇
- 二零二五年度智能交通管理系統(tǒng)免責(zé)協(xié)議范本4篇
- 2025版鋁材回收利用項目合作協(xié)議4篇
- 2025年度殘疾人勞動合同簽訂中的殘疾人權(quán)益保障與就業(yè)促進(jìn)2篇
- 2025餐飲企業(yè)員工勞動合同15篇
- 2025年度商業(yè)廣場墻面LED廣告屏租賃合同標(biāo)的協(xié)議4篇
- 2024食用油倉儲物流服務(wù)合作合同3篇
- 標(biāo)識標(biāo)牌施工質(zhì)量保障合同(2025年度)3篇
- 2025年浙江省湖州市湖州職業(yè)技術(shù)學(xué)院招聘5人歷年高頻重點提升(共500題)附帶答案詳解
- ZK24600型平旋盤使用說明書(環(huán)球)
- 城市基礎(chǔ)設(shè)施維修計劃
- 2024山西廣播電視臺招聘專業(yè)技術(shù)崗位編制人員20人歷年高頻500題難、易錯點模擬試題附帶答案詳解
- 新材料行業(yè)系列深度報告一:新材料行業(yè)研究框架
- 人教版小學(xué)英語各冊單詞表(帶英標(biāo))
- 廣東省潮州市潮安區(qū)2023-2024學(xué)年六年級上學(xué)期期末考試數(shù)學(xué)試題
- 鄉(xiāng)村治理中正式制度與非正式制度的關(guān)系解析
- 智能護(hù)理:人工智能助力的醫(yī)療創(chuàng)新
- 國家中小學(xué)智慧教育平臺培訓(xùn)專題講座
- 5G+教育5G技術(shù)在智慧校園教育專網(wǎng)系統(tǒng)的應(yīng)用
評論
0/150
提交評論