




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、南昌航空大學實驗報告二0一三年一月六日課程名稱:移動終端編程技術實驗名稱:Android組件通信和后臺服務班級:: 同組人:指導教師評定: 簽名:一、實驗目的了解使用Intent進行組件通信的原理,掌握使用Intent啟動Activity的方法; 掌握獲取Activity返回值的方法;了解Intent過濾器的原理與匹配機制;了解Service的原理和用途;掌握進程內服務的管理方法;掌握服務的隱式啟動和顯式啟動方法;二、實驗工具EclipseMyEclipse+ ADT + Android2.2 SDK;三、實驗題目1.編程實現(1)功能描述:主界面上有一個 登錄”按鈕,點擊登錄”按鈕后打開一個
2、新的 Activity ;新 的Activity上面有輸入用戶名和密碼的控件,在用戶關閉這個 Activity后,將用 戶輸入的用戶名和密碼傳遞到主界面中。編程要點:主界面的 Activity 命名為 MainActivity ;啟動新 的 Activity 命名為 UserLoginActivity ;分別使用顯示啟動和隱式啟動的方式,啟動新的Activity ;用戶名中不能出現“ ”符號,同時長度不超過12個字符;密碼使用密碼文本顯示方式,即顯示為“ * ”,同時只能為數字; 返回的用戶名和密碼要以Toast的方式顯示出來; MainActivity 和 UserLoginActivity
3、 中各個生命周期的回調函數中要以 Log.i方式顯示日志信息。2.編程實現(1)功能描述:編程建立一個簡單的進程內服務,實現比較兩個整數大小的功能。服務提供 IntCompare(Int, Int)函數,輸入兩個整數,輸出較大的整數。編程要點:主界面的Activity命名為MainActivity ;提供兩個EditText,分別輸入兩個 整數;提供一個Botton,啟動比較過程;提供一個 TextView,顯示較大的整數;分別使用啟動方式和綁定方式使用 Service;分別使用 Handle和AsyncTask更新TextView中的內容。四、實驗步驟1 .詳細工程結構及部分代碼顯式和隱式都
4、在其中Lab3_l_intent6 BFC士 rn.te5t. n<huj,l MainActivity.java|J'| U5e-rLoginActivrtyjava J Lf layout login.xmlCl ma in.xml» valueriCi strings,xml,1 An droid M a rr«t.)ciTil結果:Intent樂式苜錄施式苜錄代碼:MainActivity.javapublic class MainActivity extends Activity protected int SUBACTIVITY1 = 1;priv
5、ate static String TAG = "MainActivity"Button button1,button2;public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);setContentView(R.layout.main);學習文檔僅供參考Log.i(TAG , "(1) onCreate()");button1 = (Button) this.findViewById(R.id.button1);button2 = (Button
6、) this.findViewById(R.id.button2);button1.setOnClickListener(new View.OnClickListener() public void onClick(View v) Intent intent = new Intent(MainActivity.this,UserLoginActivity.class);Toast.makeText(getApplicationContext(), " 顯示啟動 ", Toast.LENGTH_SHORT).show();startActivityForResult(inte
7、nt, SUBACTIVITY1););button2.setOnClickListener(new View.OnClickListener()public void onClick(View v) Intent intent = new Intent("com.example.test");Toast.makeText(getApplicationContext(), " 隱式啟動 ", Toast.LENGTH_SHORT).show();startActivityForResult(intent, SUBACTIVITY1););protecte
8、d void onActivityResult(int requestCode, int resultCode, Intent data) super.onActivityResult(requestCode, resultCode, data);if (resultCode = RESULT_OK) Uri uriData = data.getData();Toast.makeText(getApplicationContext(), uriData.toString(), Toast.LENGTH_SHORT).show(); else Toast.makeText(getApplicat
9、ionContext(), " 用戶名和密碼為空",Toast.LENGTH_SHORT).show();Override /可視生命周期開始時被調用,對用戶界面進行必要的更改public void onStart() super.onStart();Log.i(TAG , "(2) onStart()");Override /在onStart()后被調用,用于恢復onSaveInstanceState()保存的用戶界面 信息public void onRestoreInstanceState(Bundle savedInstanceState) sup
10、er.onRestoreInstanceState(savedInstanceState);Log.i(TAG , "(3) onRestoreInstanceState()");Override 在活動生命周期開始時被調用,恢復被onPause()f亭止的用于界面更新的資源public void onResume() super.onResume();Log.i(TAG , "(4) onResume()");Override /在onResume()后被調用,保存界面信息public void onSaveInstanceState(Bundle s
11、avedInstanceState) super.onSaveInstanceState(savedInstanceState);Log.i(TAG , "(5) onSaveInstanceState()");Override/在重新進入可視生命周期前被調用,載入界面所需要的更改信息public void onRestart() super.onRestart();Log.i(TAG , "(6) onRestart()");Override/在活動生命周期結束時被調用,用來保存持久的數據或釋放占用的資源。public void onPause() s
12、uper.onPause();Log.i(TAG , "(7) onPause()");Override / 在可視生命周期結束時被調用,一般用來保存持久的數據或釋放占用的資源public void onStop() super.onStop();Log.i(TAG , "(8) onStop()");Override / 在完全生命周期結束時被調用,釋放資源,包括線程、數據連接等public void onDestroy() super.onDestroy();Log.i(TAG , "(9) onDestroy()");UserL
13、oginActivity,javapublic class UserLoginActivity extends Activity EditText username,password;Button submit,reset;private static String TAG = "MainActivity"protected void onCreate(Bundle savedInstanceState) / TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.
14、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.id.submit);reset=(Button)this.findViewById(R.id.reset);username.setFocusable(true);username.setOnKeyListene
15、r(new OnKeyListener()public boolean onKey(View v, int keyCode, KeyEvent event) / TODO Auto-generated method stubint unicodeChar = event.getUnicodeChar();if(unicodeChar= 64)return true;elsereturn false;);submit.setOnClickListener(new View.OnClickListener() public void onClick(View v) / TODO Auto-gene
16、rated method stubString name =username.getText().toString();String pass=password.getText().toString();String uriString=" 用戶名: "+name+" 密碼: "+pass;Uri data = Uri.parse(uriString);Intent result = new Intent(null, data);setResult(RESULT_OK, result);finish(););reset.setOnClickListene
17、r(new View.OnClickListener() public void onClick(View v) / TODO Auto-generated method stubsetResult(RESULT_CANCELED, null);finish(););Override /可視生命周期開始時被調用,對用戶界面進行必要的更改public void onStart() super.onStart();Log.i(TAG , "(2) onStart()");Override /在onStart()后被調用,用于恢復onSaveInstanceState()保存的用
18、戶界面信息public void onRestoreInstanceState(Bundle savedInstanceState) super.onRestoreInstanceState(savedInstanceState);Log.i(TAG , "(3) onRestoreInstanceState()");Override在活動生命周期開始時被調用,恢復被onPause()f亭止的用于界面更新的資源public void onResume() super.onResume();Log.i(TAG , "(4) onResume()");Ove
19、rride /在onResume()后被調用,保存界面信息public void onSaveInstanceState(Bundle savedInstanceState) super.onSaveInstanceState(savedInstanceState);Log.i(TAG , "(5) onSaveInstanceState()");Override/在重新進入可視生命周期前被調用,載入界面所需要的更改信息public void onRestart() super.onRestart();Log.i(TAG , "(6) onRestart()&qu
20、ot;);Override/在活動生命周期結束時被調用,用來保存持久的數據或釋放占用的資源。public void onPause() super.onPause();Log.i(TAG , "(7) onPause()");Override / 在可視生命周期結束時被調用,一般用來保存持久的數據或釋放占用的資源public void onStop() super.onStop();Log.i(TAG , "(8) onStop()");Override / 在完全生命周期結束時被調用,釋放資源,包括線程、數據連接等public void onDestr
21、oy() super.onDestroy();Log.i(TAG , "(9) onDestroy()");2. 詳細工程結構及部分代碼顯式和隱式都在其中 :( 顯式啟動 )學習文檔 僅供參考 1號 Lab3 2 Service 彥 src 由 crT*nchu,edUd5e-rvi ceJ ComreSerYicejevaJ| MainAdivityjayaj .> layoutp main.xml & valuesCl strings,xnril三 ArrdroidMarifest.xml結果:部分代碼:MainActivity.javapublic cl
22、ass MainActivity extends Activity /* Called when the activity 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 stati
23、c EditText two=null;public static void UpdateGUI(int refreshDouble)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 Bun
24、dle(); super.onCreate(savedInstanceState);setContentView(R.layout.main);final Intent intent=new Intent(MainActivity.this,CompareService.class); result=(EditText)findViewById(R.id.result);compare=(Button)findViewById(R.id pare);reset=(Button)findViewById(R.id.reset); one=(EditText)findViewById(R.id.o
25、ne); two=(EditText)findViewById(R.id.two);compare.setOnClickListener(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.s
26、etOnClickListener(new OnClickListener() public void onClick(View v) one.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();workTh
27、read = new Thread(null,backgroudWork,"WorkThread");Overridepublic 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("")
28、&&!c2.toString().equals("")one=Integer.parseInt(c1);two=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);
29、MainActivity.UpdateGUI(randomDouble); stopSelf();int IntCompare(int a,int b) if(a>=b) return a;elsereturn b;(隱式啟動)/La b3_2_B i nd Servi c a & src/田 .nchu. EindServiceJ Compar&Servicejava MainArtivit.jaivaJ r-layoutmain>xmlJ & values string e xml亂 ndrcidManifest.xml部分代碼:MainAc
30、tivity.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) super.onCreate(savedInstanceState);setContentView(R.layo
31、ut.main);final TextView result=(TextView)findViewById(R.id.result);Button compare=(Button)findViewById(R.id pare);Button reset=(Button)findViewById(R.id.reset);final EditText one=(EditText)findViewById(R.id.one);final EditText two=(EditText)findViewById(R.id.two);if(!isBound)Intent serviceIntent=new
32、 Intent(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=two.getText().toString();if(!c1.equals(""
33、)&&!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 stubcompareServi
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 天津2025年天津市農業科學院招聘工作人員(第二輪)筆試歷年參考題庫附帶答案詳解
- 河套學院《裝飾工程管理與現場實訓》2023-2024學年第二學期期末試卷
- 天津商業大學寶德學院《環境研究法》2023-2024學年第二學期期末試卷
- 長白山職業技術學院《專業綜合實踐2(智能電子系統設計與制作)》2023-2024學年第二學期期末試卷
- 山東財經大學燕山學院《中醫學基礎1》2023-2024學年第二學期期末試卷
- 撫順職業技術學院《建筑制圖與AutoCAD》2023-2024學年第二學期期末試卷
- 烏蘭察布醫學高等專科學?!痘蚬こ讨扑帯?023-2024學年第二學期期末試卷
- 四川工商學院《材料成型裝備及自動化》2023-2024學年第二學期期末試卷
- 廊坊職業技術學院《產品設計表達基礎》2023-2024學年第二學期期末試卷
- 上海師范大學天華學院《電子電路基礎實驗(下)》2023-2024學年第二學期期末試卷
- 兒童行為干預效果評估的機器學習方法-洞察闡釋
- 區塊鏈考試試題及答案
- 演講口才考試試題及答案
- 2025-2030中國氟化工行業市場發展現狀及發展趨勢與投資前景研究報告
- 2025年湖北省武漢市高考地理調研試卷(2月份)
- 2025年保密觀知識競賽題庫附答案(黃金題型)含答案詳解
- 2024年呼和浩特市玉泉區消防救援大隊招聘真題
- SL631水利水電工程單元工程施工質量驗收標準第3部分:地基處理與基礎工程
- 新22J01 工程做法圖集
- 2024年山東省濟南市中考英語試題卷(含答案解析)
- 中國陶瓷欣賞智慧樹知到期末考試答案章節答案2024年中國地質大學(武漢)
評論
0/150
提交評論