Activity 生命周期:
使用Bundle 在Activity 間傳遞數(shù)據(jù)1:
1.1從源Activity 中傳遞數(shù)據(jù)
Intent openWelcomeActivityIntent=new Intent(); Bundle myBundelForName=new Bundle(); myBundelForName.putString("Key_Name",inName.getText().toString()); myBundelForName.putString("Key_Age",inAge.getText().toString()); openWelcomeActivityIntent.putExtras(myBundelForName); openWelcomeActivityIntent.setClass(AndroidBundel.this, Welcome.class); startActivity(openWelcomeActivityIntent);
?
1.2目標(biāo)Activity 中獲取數(shù)據(jù)
//從Intent 中獲取數(shù)據(jù) Bundle myBundelForGetName=this.getIntent().getExtras(); String name=myBundelForGetName.getString("Key_Name"); myTextView_showName.setText("歡迎您進(jìn)入:"+name);
使用Bundle 在Activity 間傳遞數(shù)據(jù)2:
2.1從源請求Activity 中通過一個Intent 把一個服務(wù)請求傳到目標(biāo)Activity 中
//從Intent 中獲取數(shù)據(jù)
Bundle myBundelForGetName=this.getIntent().getExtras(); String name=myBundelForGetName.getString("Key_Name"); myTextView_showName.setText("歡迎您進(jìn)入:"+name); private Intent toNextIntent;//Intent 成員聲明 toNextIntent=new Intent();//Intent 定義 toNextIntent.setClass(TwoActivityME3.this, SecondActivity3.class); //設(shè)定開啟的下一個Activity startActivityForResult(toNextIntent, REQUEST_ASK););
2.2開啟Intent 時候,把請求碼同時傳遞在源請求Activity 中等待Intent 返回應(yīng)答結(jié)果,通過重載onActivityResult()方法
@Override
protected void onActivityResult(int requestCode,int resultCode,Intent data) { super.onActivityResult(requestCode, resultCode, data); if(requestCode==REQUEST_ASK){ if(resultCode==RESULT_CANCELED){ setTitle("Cancel****"); }else if(resultCode==RESULT_OK){ showBundle=data.getExtras();//從返回的Intent中獲得Bundle Name=showBundle.getString("myName");//從bundle中獲得相應(yīng)數(shù)據(jù) text.setText("the name get from the second layout:\n"+Name); } } }
? 第一個參數(shù)是你開啟請求Intent時的對應(yīng)請求碼,可以自己定義。
? 第二個參數(shù)是目標(biāo)Activity返回的驗證結(jié)果碼
? 第三個參數(shù)是目標(biāo)Activity返回的Intent
2.3目標(biāo)Activity 中發(fā)送請求結(jié)果代碼,連同源Activity 請求的數(shù)據(jù)一同綁定到Bundle
中通過Intent 傳回源請求Activity 中
- backIntent= new ?Intent(); ??
- stringBundle= new ?Bundle(); ??
- stringBundle.putString( "myName" ,?Name); ??
- backIntent.putExtras(stringBundle); ??
- setResult(RESULT_OK,?backIntent); //返回Activity結(jié)果碼 ??
- finish();??
方法名稱
|
描述
|
Killable?(能否被殺掉)
|
下一個調(diào)用的方法
|
當(dāng)這個Activity第一次被創(chuàng)建的時候,調(diào)用此方法。這個方法通常用于:1、為Activity設(shè)置所要使用的布局文件2、為按鈕綁定監(jiān)聽器等靜態(tài)的設(shè)置操作。
|
No
|
||
當(dāng)Activity處于可見狀態(tài)時,調(diào)用此方法。
|
No
|
or
onStop()
|
|
開始與用戶進(jìn)行交互時(能夠獲得用戶焦點,可以進(jìn)行點擊等操作的時候),調(diào)用此方法。
|
No
|
||
之前被停止,現(xiàn)在重新啟動,調(diào)用此方法。
|
No
|
||
當(dāng)系統(tǒng)啟動另外一個新的Activity時,先調(diào)用前一個Activity的此方法。這個方法通常用于:保存現(xiàn)有的Activity中的數(shù)據(jù)、停止動畫等,這個實現(xiàn)方法必須非常快。
|
Yes
|
or
onStop()
|
|
當(dāng)Activity處于不可見狀態(tài)時(現(xiàn)有的Activity被新的Activity完全覆蓋時),調(diào)用此方法。
注:如果只是在現(xiàn)有的Activity中彈出一個對話框,沒有完全覆蓋現(xiàn)有的Activity的話是不會調(diào)用此方法的。
|
Yes
|
or
onDestroy()
|
|
銷毀Activity。
有兩種情況會對Activity進(jìn)行銷毀:1、在系統(tǒng)不足以支撐現(xiàn)有的應(yīng)用程序的情況下,系統(tǒng)會關(guān)閉(銷毀)掉一部分系統(tǒng)認(rèn)為不必要的Activity,以節(jié)省空間。2、程序中手動調(diào)用finish()方法進(jìn)行銷毀。
|
Yes
|
nothings
|
實例:創(chuàng)建一個 Android 應(yīng)用程序,寫兩個 Activity ,都實現(xiàn)以上 7 個方法,通過從第一個 Activity 跳轉(zhuǎn)到第二個 Activity ,然后點擊模擬器右側(cè)的返回按鈕,根據(jù)應(yīng)用程序中輸出的內(nèi)容觀察 Activity 的生命周期。
在這里順便大致記錄一下開發(fā)步驟:
1 、創(chuàng)建一個 Android 應(yīng)用程序
2 、寫兩個 Activity ( FirstActivity 、 SecondActivity ),都實現(xiàn)以上 7 個方法,并都輸出一句語句。
3 、因為要從 FirstActivity 跳轉(zhuǎn)到 SecondActivity ,所以要在 FirstActivity 的布局文件中添加一個按鈕,并且要寫一個監(jiān)聽器,為按鈕綁定 OnclickListener 事件。
4 、不要忘記將新創(chuàng)建的 Activity 添加到 AndroidManifest.xml 文件中。
5 、然后運(yùn)行程序觀察。
(這里只大致講了一下開發(fā)流程沒有將具體的代碼貼出來,現(xiàn)在將程序打包了,有需要的可在附件中下載)
運(yùn)行程序:
1 、當(dāng)程序剛開始運(yùn)行 FirstActivity 的時候,控制臺輸出以下內(nèi)容:
從控制臺輸出內(nèi)容來看,程序先執(zhí)行了 FirstActivity 的 onCreate() 方法,然后再依次執(zhí)行了 onStart() 、 onResume() 方法。
2 、當(dāng)點擊 FristActivity 上的按鈕時,控制臺輸出以下內(nèi)容:
從控制臺輸出內(nèi)容來看,程序先調(diào)用了 FirstActivity 的 onPause() 方法,然后再一次調(diào)用了 SecondActivity 的 onCreate() 、 onStart() 、 onResume() 方法,最后調(diào)用了 FirstActivity 的 onStop() 方法。
3 、點擊模擬器右側(cè)的返回按鈕,控制臺輸出以下內(nèi)容:
從控制臺輸出內(nèi)容來看,程序先調(diào)用了 SecondActivity 的 onPause() 方法,然后再依次調(diào)用了
FirstActivity 的 onRestart() 、 onStart() 、 onResume() 方法,再調(diào)用了 SecondActivity 的 onStop() 、 onDestroy() 方法。
注意:當(dāng)點擊返回的時候,這里調(diào)用的不是 FirstActivity 的 onCreate() 方法而是 onRestart() 方法,因為在之前 FirstActivity 已經(jīng)被創(chuàng)建過了并且沒有銷毀,只要當(dāng) FirstActivity 銷毀了再調(diào)用 FirstActivit y 的時候才會調(diào)用 onCreate() 方法。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
