第2章activity intent管理資源_第1頁
第2章activity intent管理資源_第2頁
第2章activity intent管理資源_第3頁
第2章activity intent管理資源_第4頁
第2章activity intent管理資源_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

Android移動應(yīng)用基礎(chǔ)第2章Activity、Intent、資源使用目標(biāo):2.1什么是Activity2.2Activity的生命周期2.3Intent在不同Activity之間實現(xiàn)跳轉(zhuǎn)2.4資源創(chuàng)建與使用

時間:6學(xué)時教學(xué)方法:PPT講解2.1Android組件-1/4組件是可以調(diào)用的基本功能模塊,Android應(yīng)用程序就是由組件組成的Android系統(tǒng)有四個重要的組件,分別是Activity、Service、BroadcaseReceiver和ContentProvider2.1Android組件-2/4ActivityActivity是Android程序的呈現(xiàn)層,顯示可視化的用戶界面,并接收與用戶交互所產(chǎn)生的界面事件Android應(yīng)用程序可以包含一個或多個Activity,一般在程序啟動后會呈現(xiàn)一個Activity,用于提示用戶程序已經(jīng)正常啟動在界面上的表現(xiàn)形式:全屏窗體,非全屏懸浮窗體,對話框ServiceService用于沒有用戶界面,但需要長時間在后臺運(yùn)行的應(yīng)用2.1Android組件-3/4ContentProviderContentProvider是Android系統(tǒng)提供的一種標(biāo)準(zhǔn)的共享數(shù)據(jù)的機(jī)制,應(yīng)用程序可以通過ContentProvider訪問其他應(yīng)用程序的私有數(shù)據(jù)私有數(shù)據(jù)可以是存儲在文件系統(tǒng)中的文件,也可以是SQLite中的數(shù)據(jù)庫Android系統(tǒng)內(nèi)部也提供一些內(nèi)置的ContentProvider,能夠為應(yīng)用程序提供重要的數(shù)據(jù)信息BroadcaseReceiverBroadcaseReceiver是用來接受并響應(yīng)廣播消息的組件不包含任何用戶界面可以通過啟動Activity或者Notification通知用戶接收到重要信息Notification能夠通過多種方法提示用戶,包括閃動背景燈、震動設(shè)備、發(fā)出聲音或在狀態(tài)欄上放置一個持久的圖標(biāo)2.1Android組件-4/4組件生命周期所有Android組件都具有自己的生命周期,是從組件建立到組件銷毀的整個過程在生命周期中,組件會在可見、不可見、活動、非活動等狀態(tài)中不斷變化第2章Activity、Intent、資源使用目標(biāo):2.1什么是Activity2.2Activity的生命周期2.3Intent在不同Activity之間實現(xiàn)跳轉(zhuǎn)2.4資源創(chuàng)建與使用

時間:6學(xué)時教學(xué)方法:PPT講解2.2Activity生命周期-1/11Activity生命周期Activity生命周期指Activity從啟動到銷毀的過程Activity表現(xiàn)為四種狀態(tài),分別是活動狀態(tài)、暫停狀態(tài)、停止?fàn)顟B(tài)和非活動狀態(tài)活動狀態(tài),Activity在用戶界面中處于最上層,完全能被用戶看到,能夠與用戶進(jìn)行交互暫停狀態(tài),Activity在界面上被部分遮擋,該Activity不再處于用戶界面的最上層,且不能夠與用戶進(jìn)行交互停止?fàn)顟B(tài),Activity在界面上完全不能被用戶看到,也就是說這個Activity被其他Activity全部遮擋非活動狀態(tài)不在以上三種狀態(tài)中的Activity則處于非活動狀態(tài)2.2Activity生命周期-2/11Activity的四種狀態(tài)的變換關(guān)系圖2.2Activity生命周期-3/11Activity棧遵循“后進(jìn)先出”的規(guī)則事件的回調(diào)函數(shù)2.2Activity生命周期-4/11publicclassMyActivityextendsActivity{protectedvoidonCreate(BundlesavedInstanceState);protectedvoidonStart();protectedvoidonRestart();protectedvoidonResume();protectedvoidonPause();protectedvoidonStop();protectedvoidonDestroy();}android:theme="@android:style/Theme.Dialog"2.2Activity生命周期-5/11

2.2Activity生命周期-6/112.2Activity生命周期-7/11全生命周期全生命周期是從Activity建立到銷毀的全部過程,始于onCreate(),結(jié)束于onDestroy()使用者通常在onCreate()中初始化Activity所能使用的全局資源和狀態(tài),并在onDestroy()中釋放這些資源在一些極端的情況下,Android系統(tǒng)會不調(diào)用onDestroy()函數(shù),而直接終止進(jìn)函數(shù)的調(diào)用順序:onCreate()→onStart()→onResume()→onPause()→onStop()→onDestroy()調(diào)用onCreate()函數(shù)分配資源調(diào)用onStart()將Activity顯示在屏幕上調(diào)用onResume()獲取屏幕焦點(diǎn)調(diào)用onPause()、onStop()和onDestroy(),釋放資源并銷毀進(jìn)程可視生命周期可視生命周期是Activity在界面上從可見到不可見的過程,開始于onStart(),結(jié)束于onStop()函數(shù)的調(diào)用順序:

onSaveInstanceState()→onPause()→onStop()→onRestart()→onStart()→onResume()調(diào)用onSaveInstanceState()函數(shù)保存Activity狀態(tài)調(diào)用onPause()和onStop(),停止對不可見Activity的更新調(diào)用onRestart()恢復(fù)需要界面上需要更新的信息調(diào)用onStart()和onResume()重新顯示Activity,并接受用戶交互2.2Activity生命周期-8/11活動生命周期活動生命周期是Activity在屏幕的最上層,并能夠與用戶交互的階段,開始于onResume(),結(jié)束于onPause()在Activity的狀態(tài)變換過程中onResume()和onPause()經(jīng)常被調(diào)用,因此這兩個函數(shù)中應(yīng)使用更為簡單、高效的代碼函數(shù)調(diào)用順序如下:onSaveInstanceState()→onPause()→onResume()調(diào)用onSaveInstanceState()保存Activity的狀態(tài)調(diào)用onPause()停止與用戶交互調(diào)用onResume()恢復(fù)與用戶的交互某次輸出:scanf在使用時需要變量的地址更讓我們頭疼2.2Activity生命周期-9/11Activity生命周期的事件回調(diào)函數(shù)函數(shù)說明onCreate()Activity啟動后第一個被調(diào)用的函數(shù),常用來進(jìn)行Activity的初始化,例如創(chuàng)建View、綁定數(shù)據(jù)或恢復(fù)信息等。onStart()當(dāng)Activity顯示在屏幕上時,該函數(shù)被調(diào)用。onRestart()當(dāng)Activity從停止?fàn)顟B(tài)進(jìn)入活動狀態(tài)前,調(diào)用該函數(shù)。onResume()當(dāng)Activity能夠與用戶交互,接受用戶輸入時,該函數(shù)被調(diào)用。此時的Activity位于Activity棧的棧頂。此方法是獲取Activity運(yùn)行所需資源的最佳方法,非常適合用于啟動音頻、視頻、動畫。onPause()當(dāng)Activity進(jìn)入暫停狀態(tài)時,該函數(shù)被調(diào)用。一般用來保存持久的數(shù)據(jù)或釋放占用的資源。應(yīng)該終止在onResume方法中播放的視頻等其他資源,關(guān)閉Cursor對象等。此方法是Activity在后臺最后一次能夠有機(jī)會進(jìn)行清理工作、釋放無需資源地方,需要保存未提交的數(shù)據(jù)。onStop()當(dāng)Activity進(jìn)入停止?fàn)顟B(tài)時,該函數(shù)被調(diào)用。onDestroy()在Activity被終止前,即進(jìn)入非活動狀態(tài)前,該函數(shù)被調(diào)用。2.2Activity生命周期-10/11避免Activiy對象被銷毀在低內(nèi)存資源的情況下,Android系統(tǒng)會終止任何一暫停、停止或銷毀的Activity進(jìn)程,這意味著不處于前臺的Activity都可能被關(guān)閉.如果ActivityonPause()方法調(diào)用后被關(guān)閉,那么他的onStop()和onDestory()方法可能不會被調(diào)用,在onPause()方法中釋放越多的資源,轉(zhuǎn)入后臺的Activity被終止的可能性越小.在onDestory中銷毀靜態(tài)Activity數(shù)據(jù).當(dāng)一個Activity唄銷毀,onDestroy()方法將被調(diào)用,在下面兩種情況下回被回調(diào):Activity自然的完成了它的生命周期,或者由于資源占用的原因被Android操作系統(tǒng)終止.2.2Activity生命周期-11/11第2章Activity、Intent、資源使用目標(biāo):2.1什么是Activity2.2Activity的生命周期2.3Intent在不同Activity之間實現(xiàn)跳轉(zhuǎn)2.4資源創(chuàng)建與使用

時間:6學(xué)時教學(xué)方法:PPT講解2.3.1Intent(意圖)-1/3Intent(意圖),Intent提供了一種通用的消息系統(tǒng),它允許在你的應(yīng)用程序與其它的應(yīng)用程序間傳遞Intent來執(zhí)行動作和產(chǎn)生事件Intent是對一次將要進(jìn)行的操作的抽象描述我們使用Intent啟動一個Activity、Service、Boradcast等,并進(jìn)行數(shù)據(jù)的傳遞Intent可以劃分成顯式意圖和隱式意圖。顯式意圖:調(diào)用Intent.setComponent()或Intent.setClass()方法指定了組件名或類對象的Intent為顯式意圖,顯式意圖明確指定了Intent應(yīng)該傳遞給哪個組件。隱式意圖:Android系統(tǒng)會根據(jù)隱式意圖中設(shè)置的動作(action)、類別(category)、數(shù)據(jù)(URI和數(shù)據(jù)類型)找到最合適的組件來處理這個意圖。IntentFilter(過濾器)其實就是用來匹配隱式Intent的,如果IntentFilter定義的動作、類別、數(shù)據(jù)(URI和數(shù)據(jù)類型)與Intent匹配,就會使用IntentFilter所在的組件來處理該Intent。想要接收使用startActivity()方法傳遞的隱式意圖的活動必須在它們的意圖過濾器中包含"ent.category.DEFAULT"2.3.1Intent(意圖)-2/3Intenti=newIntent();i.setAction(Intent.ACTION_CALL);i.setData(Uri.parse("tel:222"));startActivity(i);Intenti=newIntent();i.setAction(Intent.ACTION_SENDTO);i.setData(Uri.parse("smsto:5554"));i.putExtra("sms_body","aaaaaaaaaaaaaaaa");startActivity(i);Intenti3=newIntent(Intent.ACTION_VIEW,Uri.parse(""));startActivity(i3);打開權(quán)限2.3.1Intent(意圖)-3/32.3.2打開新的Activity,傳遞參數(shù)//傳遞數(shù)據(jù) Intentintent=newIntent(MainActivity.this,NewActivity.class) Bundlebundle=newBundle();//該類用作攜帶數(shù)據(jù)bundle.putString("name",“xxxx"); bundle.putInt("age",4); intent.putExtras(bundle);//附帶上額外的數(shù)據(jù) startActivity(intent);//獲取數(shù)據(jù) Bundlebundle=this.getIntent().getExtras(); Stringname=bundle.getString("name"); intage=bundle.getInt("age");Bundle類用作攜帶數(shù)據(jù),它類似于Map,用于存放key-value名值對形式的值。Bundle的內(nèi)部實際上是使用了HashMap<String,Object>類型的變量來存放putXxx()方法放入的值2.3.3為Intent附加數(shù)據(jù)的兩種方法第一種寫法,用于批量添加數(shù)據(jù)到Intent: Intentintent=newIntent(); Bundlebundle=newBundle();//該類用作攜帶數(shù)據(jù) bundle.putString("name",“xxxxxx"); intent.putExtras(bundle);//為意圖追加額外的數(shù)據(jù),意圖原來已經(jīng)具有的數(shù)據(jù)不會丟失,但key同名的數(shù)據(jù)會被替換第二種寫法:這種寫法的作用等價于上面的寫法,只不過這種寫法是把數(shù)據(jù)一個個地添加進(jìn)Intent,這種寫法使用起來比較方便,而且只需要編寫少量的代碼。 Intentintent=newIntent(); intent.putExtra("name",“xxxxx"); Intent提供了各種常用類型重載后的putExtra()方法,在putExtra()方法內(nèi)部會判斷當(dāng)前Intent對象內(nèi)部是否已經(jīng)存在一個Bundle對象,如果不存在就會新建Bundle對象,以后調(diào)用putExtra()方法傳入的值都會存放于該Bundle對象2.3.4Activity關(guān)閉后返回的數(shù)據(jù)-1/3在Activity中得到新打開Activity關(guān)閉后返回的數(shù)據(jù),需要使用系統(tǒng)提供的startActivityForResult(Intentintent,intrequestCode)方法打開新的Activity,新的Activity關(guān)閉后會向前面的Activity傳回數(shù)據(jù),為了得到傳回的數(shù)據(jù)在前面的Activity中重寫onActivityResult(intrequestCode,intresultCode,Intentdata)方法://第一個參數(shù)為請求碼,即調(diào)用startActivityForResult()傳遞過去的值 //第二個參數(shù)為結(jié)果碼,結(jié)果碼用于標(biāo)識返回數(shù)據(jù)來自哪個新Activity@OverrideprotectedvoidonActivityResult(intrequestCode,intresultCode,Intentdata){ Stringresult=data.getExtras().getString(“result”)); //得到新Activity關(guān)閉后返回的數(shù)據(jù)}2.3.4Activity關(guān)閉后返回的數(shù)據(jù)-2/3使用startActivityForResult(Intentintent,intrequestCode)方法打開新的Activity,新Activity關(guān)閉前需要向前面的Activity返回數(shù)據(jù)需要使用系統(tǒng)提供的setResult(intresultCode,Intentdata)方法實現(xiàn):

Intentintent=newIntent();//數(shù)據(jù)是使用Intent返回

intent.putExtra(“result”,“xxxxx”);//把返回數(shù)據(jù)存入Intent setResult(RESULT_OK,intent);//設(shè)置返回數(shù)據(jù)

setResult()方法的第一個參數(shù)值可以根據(jù)業(yè)務(wù)需要自己定義2.3.4Activity關(guān)閉后返回的數(shù)據(jù)-3/3 Buttonbtn1=(Button)findViewById(R.id.button1); btn1.setOnClickListener(newOnClickListener(){ @Override public

voidonClick(Viewv){ Urinumber=Uri.parse("tel:1234"); Intenti=newIntent(Intent.ACTION_CALL,number); startActivity(i); }});第2章Activity、Intent、資源使用目標(biāo):2.1什么是Activity2.2Activity的生命周期2.3Intent在不同Activity之間實現(xiàn)跳轉(zhuǎn)2.4資源創(chuàng)建與使用

時間:6學(xué)時教學(xué)方法:PPT講解2.4.1管理應(yīng)用程序資源-1/2所有應(yīng)用程序都有代碼指令和數(shù)據(jù)構(gòu)成Andriod工程中,資源文件和Java類文件時分開存儲的。大多數(shù)常見的資源類型被存儲于XML中Android資源目錄的層級結(jié)構(gòu):所有資源存放在res目錄中/res/drawable-*/圖形資源文件/res/layout/用戶界面資源/res/values/簡單數(shù)據(jù),字符串字符值等2.4.1管理應(yīng)用程序資源-2/2/res/values/strings.xml字符串/res/values/colors.xml顏色/res/values/dimens.xml尺寸/res/drawable/圖像.png.jpg或xml定義的圖形/res/anim/xxxxx.xml補(bǔ)間動畫<set><apha><scale>…/res/drawabe/xxx.xml逐幀動畫<animation-list><item>/res/menu/helpmenu.xml菜單/res/xml/data.xmxml文件

/res/raw原始文件xx.mp3xx.mp4xx.txt/res/layout布局/res/values樣式和主題<style>2.4.2設(shè)定和使用資源-1/7使用string字符串資源: <resources> <stringname="app_name">HelloAndroid</string> </resources>在應(yīng)用程序訪問字符串資源 Stringapp_name=getResources().getString(R.string.app_name);2.4.2設(shè)定和使用資源-2/7使用string字符串?dāng)?shù)組資源:在應(yīng)用程序訪問字符串資源Stringflavors[]=getResources().getStringArray(R.array.flavors);<resources>

<string-arrayname="flavors">

<item>java</item>

<item>android</item>

</string-array></resources>2.4.2設(shè)定和使用資源-3/7使用顏色Android可以存儲RGB顏色值,RGB顏色值以#開頭,還可以給出alpha值以控制透明度.#RGB

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論