




下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、南昌航空大學實驗報告二0一三年一月六日 課程名稱:移動終端編程技術實驗名稱: Android組件通信和后臺服務班級:姓名:同組人:指導教師評定:簽名:一、實驗目的了解使用Intent進行組件通信的原理,掌握使用 Intent啟動Activity的方法;掌握獲取Activity返回值的方法;了解Intent過濾器的原理與匹配機制;了解Service的原理和用途;掌握進程內服務的管理方法;掌握服務的隱式啟動和顯式啟動方法;二、實驗工具Eclipse ( MyEclipse ) + ADT + Android2.2 SDK ;三、實驗題目1.編程實現功能描述:主界面上有一個“登錄”按鈕,點擊“登錄”
2、按鈕后打開一個新的Activity ;新的Activity上面有輸入用戶名和密碼的控件,在用戶關閉這個Activity 后,將用戶輸入的用戶名和密碼傳遞到主界面中。編程要點:主界面 的 Activity 命名為 MainActivity ; 啟動新的 Activity 命名為 UserLoginActivity ;分別使用顯示啟動和隱式啟動的方式,啟動新的Activity ;用戶名中不能出現“ 符號,同時長度不超過12個字符;密碼使用密碼文本顯示方式,即顯示為“ * ”,同時只能為數字; 返回的用戶名和密碼要以Toast的方式顯示出來; MainActivity 和 UserLoginActi
3、vity 中各個生命周期的回調函數中要以Log.i 方式顯示日志信息。2. 編程實現 功能描述:編程建立一個簡單的進程內服務,實現比較兩個整數大小的功能。服務提供 IntCompare(Int, Int) 函數,輸入兩個整數,輸出較大的整數。 編程要點:主界面的Activity命名為 MainActivity ;提供兩個EditText ,分別輸入兩個整數;提供一個Botton ,啟動比較過程;提供一個TextView ,顯示較大的整數;分別使用啟動方式和綁定方式使用Service ;分別使用Handle 和 AsyncTask 更新 TextView 中的內容。四、 實驗步驟1. 詳細工程結
4、構及部分代碼(顯式和隱式都在其中):結果:代碼: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 / 可視生命周期開始時被調用,對用戶界面進行必要的更改public void onStart() super.onStart();Log.i(TAG, "(2) onStart()");Override / 在 onStart() 后
9、被調用,用于恢復onSaveInstanceState() 保存的用戶界面信息public void onRestoreInstanceState(Bundle savedInstanceState) super.onRestoreInstanceState(savedInstanceState);Log.i(TAG, "(3) onRestoreInstanceState()");Override / 在活動生命周期開始時被調用,恢復被onPause() 停止的用于界面更新的資源public void onResume() super.onResume();Log.i(T
10、AG, "(4) onResume()");Override / 在onResume()后被調用,保存界面信息public void onSaveInstanceState(Bundle savedInstanceState) super.onSaveInstanceState(savedInstanceState);Log.i(TAG, "(5) onSaveInstanceState()");Override / 在重新進入可視生命周期前被調用,載入界面所需要的更改信息public void onRestart() super.onRestart()
11、;Log.i(TAG, "(6) onRestart()");Override / 在活動生命周期結束時被調用,用來保存持久的數據或釋放占用的資源。public void onPause() super.onPause();Log.i(TAG, "(7) onPause()");Override / 在可視生命周期結束時被調用,一般用來保存持久的數據或釋放占用的資源public void onStop() super.onStop();Log.i(TAG, "(8) onStop()");Override / 在完全生命周期結束時被調
12、用,釋放資源,包括線程、數據連接等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 / 可視生命周期開始時被調用,對用戶界面進行必要的更改public void onStart() sup
17、er.onStart();Log.i(TAG, "(2) onStart()");Override / 在 onStart() 后被調用,用于恢復onSaveInstanceState() 保存的用戶界面信息public void onRestoreInstanceState(Bundle savedInstanceState) super.onRestoreInstanceState(savedInstanceState);Log.i(TAG, "(3) onRestoreInstanceState()");Override / 在活動生命周期開始時被
18、調用,恢復被onPause() 停止的用于界面更新的資源public void onResume() super.onResume();Log.i(TAG, "(4) onResume()");Override / 在onResume()后被調用,保存界面信息public void onSaveInstanceState(Bundle savedInstanceState) super.onSaveInstanceState(savedInstanceState);Log.i(TAG, "(5) onSaveInstanceState()");Overr
19、ide / 在重新進入可視生命周期前被調用,載入界面所需要的更改信息public void onRestart() super.onRestart();Log.i(TAG, "(6) onRestart()");Override / 在活動生命周期結束時被調用,用來保存持久的數據或釋放占用的 資源。public void onPause() super.onPause();Log.i(TAG, "(7) onPause()");Override / 在可視生命周期結束時被調用,一般用來保存持久的數據或釋放占用的資源public void onStop()
20、 super.onStop();Log.i(TAG, "(8) onStop()");Override / 在完全生命周期結束時被調用,釋放資源,包括線程、數據連接等public void onDestroy() super.onDestroy();Log.i(TAG, "(9) onDestroy()");2. 詳細工程結構及部分代碼(顯式和隱式都在其中):( 顯式啟動)結果:部分代碼: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;( 隱式啟動)結果:部分代碼: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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 逐一突破裁判員試題及答案
- 農作物種子繁育員考試相關法律知識的試題答案
- 游泳救生員資格考試給你準備的試題及答案
- 內部審計農作物種子繁育員考試的試題答案
- 裁判員如何處理突發事件試題及答案
- 模具加工中常見問題解決方案試題及答案
- 鍛煉思維的籃球裁判員考試試題與答案
- 2024年體育經紀人資格考試復習資料試題及答案
- 解鎖知識 體育經紀人考試試題及答案匯編
- 2025年中國辦公木椅市場調查研究報告
- 軟件工程介紹
- 功能性動作篩查(FMS)
- 電子商務的區塊鏈技術應用
- 船用起重機作業安全操作規程培訓課件
- 挺膺擔當主題團課
- 煤礦安全監控系統施工方案
- 中國地圖素材課件
- 動火作業專項安全施工方案
- 【新能源汽車電池回收技術方案設計3500字(論文)】
- 刑偵行業:刑偵技術與案件偵查培訓研討會
- 《林業試驗設計及數據分析》講義
評論
0/150
提交評論