




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第三章 Android應(yīng)用程序的 控制機(jī)制Android應(yīng)用開發(fā)教程第三章第三章 AndroidAndroid應(yīng)用程序的控制機(jī)制應(yīng)用程序的控制機(jī)制Android應(yīng)用程序的界面應(yīng)用程序的界面1應(yīng)用程序的任務(wù)、進(jìn)程和線程應(yīng)用程序的任務(wù)、進(jìn)程和線程2Android應(yīng)用程序生命周期應(yīng)用程序生命周期3Android組件間的通信組件間的通信4用戶界面狀態(tài)保存用戶界面狀態(tài)保存5Android應(yīng)用開發(fā)教程AndroidAndroid應(yīng)用程序的界面應(yīng)用程序的界面v Android應(yīng)用程序由下列組件組成:l Activityl Servicel Broadcast Receiverl Content Provid
2、erl v Activity組件l 是Android應(yīng)用程序中使用頻率最高、最基本的組件。l 一個Activity就是一個單獨(dú)的屏幕窗口。l Activity中的內(nèi)容在屏幕上的顯示稱作用戶界面(User Interface,即UI)。第三章第三章 Android應(yīng)用程序的控制機(jī)制應(yīng)用程序的控制機(jī)制Android應(yīng)用開發(fā)教程AndroidAndroid應(yīng)用程序的界面應(yīng)用程序的界面v Activity組件l UI是實現(xiàn)在屏幕上進(jìn)行顯示數(shù)據(jù)、選擇和輸入數(shù)據(jù)等操作的用戶交互窗口。l UI的布局(Layout)為Activity構(gòu)造用戶界面的結(jié)構(gòu),定義各窗體控件的排列位置。l Android的UI元素u
3、View類:是所有可視化窗體控件的基類。uViewGroup類:是控件的容器。其下層子控件既可以是View,也可以是ViewGroup。uWidget是窗體控件的包,包含各種UI元素,大部分是可見的控件,如文本框、按鈕、列表框、圖片、進(jìn)度條等。第三章第三章 Android應(yīng)用程序的控制機(jī)制應(yīng)用程序的控制機(jī)制Android應(yīng)用開發(fā)教程AndroidAndroid應(yīng)用程序的界面應(yīng)用程序的界面v Activity組件l 每個布局都有一組布局參數(shù),用于描述其內(nèi)控件的分布屬性 。l Android界面布局設(shè)計有兩種方法:xml聲明法和程序代碼設(shè)計法。l xml聲明法:u應(yīng)用程序的可視控件及其布局信息,由
4、xml文件定義聲明,此文件稱為布局文件。u每個Activity對應(yīng)一個布局文件。u所有布局文件都存放在工程文件夾下的“reslayout”子文件夾內(nèi)。l 通常使用xml聲明法定義布局,使用java代碼來控制Activity組件狀態(tài)、執(zhí)行UI交互操作。第三章第三章 Android應(yīng)用程序的控制機(jī)制應(yīng)用程序的控制機(jī)制Android應(yīng)用開發(fā)教程AndroidAndroid應(yīng)用程序的界面應(yīng)用程序的界面v Activity組件l Activity類的Java代碼文件存放在應(yīng)用項目的“src”目錄的包內(nèi)。l Activity類位于android.app包中,需要在java代碼的前面使用“import an
5、droid.app.Activity; ”。l Activity類通常需要重載的方法:uonCreate():初始化Activity。uonPause():離開一個Activity時,提交用戶所做的修改。l 一個activity可以啟動另外一個,甚至包括與它不在同一應(yīng)用程序之中的activity。l 每一個Activity必須在Androidmanifest.xml文件中聲明。第三章第三章 Android應(yīng)用程序的控制機(jī)制應(yīng)用程序的控制機(jī)制Android應(yīng)用開發(fā)教程AndroidAndroid應(yīng)用程序的任務(wù)、進(jìn)程和線程應(yīng)用程序的任務(wù)、進(jìn)程和線程v 任務(wù)l 組件的動態(tài)運(yùn)行,有一個最與眾不同的概念
6、 - 任務(wù)l 任務(wù)(Task):u完成用戶的一個目的的所有Activity 。l 任務(wù)棧(Task Stack):u任務(wù)以一組棧的模式,將這些Activity組件聚集在一起的集合。uAndroid系統(tǒng)用一個任務(wù)棧來記錄一個任務(wù)。第三章第三章 Android應(yīng)用程序的控制機(jī)制應(yīng)用程序的控制機(jī)制Android應(yīng)用開發(fā)教程AndroidAndroid應(yīng)用程序的任務(wù)、進(jìn)程和線程應(yīng)用程序的任務(wù)、進(jìn)程和線程v 任務(wù)l 以收發(fā)郵件任務(wù)為例:第三章第三章 Android應(yīng)用程序的控制機(jī)制應(yīng)用程序的控制機(jī)制事件事件TaskTask棧棧A:點(diǎn)擊Email應(yīng)用,進(jìn)入收件箱AB:選中一封郵件,點(diǎn)擊查看詳情A,BC:點(diǎn)
7、擊回復(fù),開始寫新郵件A,B,CD:點(diǎn)擊選擇聯(lián)系人,進(jìn)入選擇聯(lián)系人界面A,B,C,DC:選擇好了聯(lián)系人后,繼續(xù)寫郵件A,B,CB:寫好郵件,發(fā)送完成,回到原始郵件A,BA:點(diǎn)擊返回,回到收件箱A退出EmailNullAndroid應(yīng)用開發(fā)教程AndroidAndroid應(yīng)用程序的任務(wù)、進(jìn)程和線程應(yīng)用程序的任務(wù)、進(jìn)程和線程v 進(jìn)程l 進(jìn)程是低級核心處理過程,用于運(yùn)行應(yīng)用程序代碼。l 在Android操作系統(tǒng)中,進(jìn)程完全是應(yīng)用程序的具體實現(xiàn)。l 組件運(yùn)行的進(jìn)程由Androidmanifest文件控制。u組件標(biāo)簽, , 和包含一個process屬性,這個屬性可以設(shè)置組件運(yùn)行的進(jìn)程。u標(biāo)簽也包含proc
8、ess屬性,用來設(shè)置程序中所有組件的默認(rèn)進(jìn)程。u所有的組件在默認(rèn)進(jìn)程的主線程中實例化,系統(tǒng)對這些組件的調(diào)用從主線程中分離。第三章第三章 Android應(yīng)用程序的控制機(jī)制應(yīng)用程序的控制機(jī)制Android應(yīng)用開發(fā)教程AndroidAndroid應(yīng)用程序的任務(wù)、進(jìn)程和線程應(yīng)用程序的任務(wù)、進(jìn)程和線程v 進(jìn)程分類l 前臺進(jìn)程:正在前臺運(yùn)行的進(jìn)程。u前臺進(jìn)程是必須的用戶操作。u前臺進(jìn)程包括:p正運(yùn)行著的,與用戶交互的Activity。p正運(yùn)行著的Activity所使用的一個Service。p服務(wù)。正在執(zhí)行回調(diào)方法(如onStart()、onCreate()或 onDestroy()的Service對象。
9、p正在執(zhí)行onReceive()方法的BroadcastReceiver對象。u一般情況下,前臺進(jìn)程不會被“殺死”。第三章第三章 Android應(yīng)用程序的控制機(jī)制應(yīng)用程序的控制機(jī)制空進(jìn)程后臺進(jìn)程服務(wù)進(jìn)程可見進(jìn)程前臺進(jìn)程重要不重要Android應(yīng)用開發(fā)教程AndroidAndroid應(yīng)用程序的任務(wù)、進(jìn)程和線程應(yīng)用程序的任務(wù)、進(jìn)程和線程v 進(jìn)程分類l 可見進(jìn)程:在屏幕中顯示,但用戶沒有直接與之進(jìn)行交互。u可見進(jìn)程為用戶在屏幕上可見但不能與用戶進(jìn)行交互的進(jìn)程。u可見進(jìn)程包括:p一個不在前臺但為用戶可見的Activity(如在調(diào)用了方法onPayse() 之后)。p一個可視的Activity所綁定的S
10、ervice。u可見進(jìn)程很重要,不到極端情況(如無法維持前臺進(jìn)程運(yùn)行時),不會“銷毀”可見進(jìn)程。第三章第三章 Android應(yīng)用程序的控制機(jī)制應(yīng)用程序的控制機(jī)制Android應(yīng)用開發(fā)教程AndroidAndroid應(yīng)用程序的任務(wù)、進(jìn)程和線程應(yīng)用程序的任務(wù)、進(jìn)程和線程v 進(jìn)程分類l 服務(wù)進(jìn)程:不可見,在后臺為用戶服務(wù); 一般不會被中斷。u服務(wù)進(jìn)程包括:p一個由startService()方法啟動的Service。p支持正在處理的不需要可見界面運(yùn)行的Service。u因為服務(wù)不是直接和用戶打交道,它的優(yōu)先級稍低于可見的活動。系統(tǒng)會盡量維持它們的運(yùn)行,除非系統(tǒng)內(nèi)存不足以維持前臺進(jìn)程和可見進(jìn)程的運(yùn)行需
11、要。第三章第三章 Android應(yīng)用程序的控制機(jī)制應(yīng)用程序的控制機(jī)制Android應(yīng)用開發(fā)教程AndroidAndroid應(yīng)用程序的任務(wù)、進(jìn)程和線程應(yīng)用程序的任務(wù)、進(jìn)程和線程v 進(jìn)程分類l 后臺進(jìn)程:對用戶作用不大,可能會被系統(tǒng)中止。u后臺進(jìn)程包括:p目前不可見的Activity(即已調(diào)用了onStop()方法)。p目前沒有服務(wù)的Service。u在一般情況下會有大量的后臺進(jìn)程,Android將會使用last-seen-first-killed模式來“殺死”進(jìn)程來為前臺進(jìn)程獲得資源。第三章第三章 Android應(yīng)用程序的控制機(jī)制應(yīng)用程序的控制機(jī)制Android應(yīng)用開發(fā)教程AndroidAndr
12、oid應(yīng)用程序的任務(wù)、進(jìn)程和線程應(yīng)用程序的任務(wù)、進(jìn)程和線程v 進(jìn)程分類l 空進(jìn)程:對用戶沒有任何作用,是首先被中止的進(jìn)程。u為了改善系統(tǒng)的整體性能, Android通常在內(nèi)存中保留生命周期結(jié)束了的應(yīng)用。uAndroid使用這種緩存機(jī)制能夠減少應(yīng)用程序在再次啟動時所需的啟動時間。這些過程通常根據(jù)需要被殺死。第三章第三章 Android應(yīng)用程序的控制機(jī)制應(yīng)用程序的控制機(jī)制Android應(yīng)用開發(fā)教程AndroidAndroid應(yīng)用程序的任務(wù)、進(jìn)程和線程應(yīng)用程序的任務(wù)、進(jìn)程和線程v 線程l 每個進(jìn)程有一到多個線程運(yùn)行在其中。l 進(jìn)程中的所有組件都在UI線程中實例化,以保證應(yīng)用程序是單線程的。l 線程通
13、過java的標(biāo)準(zhǔn)對象Thread 創(chuàng)建。l 永遠(yuǎn)要記?。簎不要阻塞UI線程!如果在UI線程中執(zhí)行阻塞或者耗時操作會導(dǎo)致UI線程無法響應(yīng)用戶請求。u不能在非UI線程(也稱為工作線程)中更新UI!這是因為android的UI控件都是線程不安全的。第三章第三章 Android應(yīng)用程序的控制機(jī)制應(yīng)用程序的控制機(jī)制Android應(yīng)用開發(fā)教程Android Android 應(yīng)用程序生命周期應(yīng)用程序生命周期v 應(yīng)用程序生命周期:l 應(yīng)用程序生命周期指從創(chuàng)建到結(jié)束的全過程。l Android 應(yīng)用程序的生命周期是由Android 框架進(jìn)行管理,而不是由應(yīng)用程序直接控制。u每個應(yīng)用的內(nèi)存和進(jìn)程都是由進(jìn)行時獨(dú)立管
14、理的。u每個Android的應(yīng)用程序在自己的進(jìn)程中運(yùn)行。l 應(yīng)用程序組件有其生命周期:由Android初始化它們,以相應(yīng)Intent響應(yīng)意圖,直到結(jié)束,實例被銷毀。l Activity類是Android應(yīng)用生命周期的重要部分之一。第三章第三章 Android應(yīng)用程序的控制機(jī)制應(yīng)用程序的控制機(jī)制Android應(yīng)用開發(fā)教程Android Android 應(yīng)用程序生命周期應(yīng)用程序生命周期v Activity的生命周期:l Activity被一個Activity棧管理。堆棧中保存對象的實例,在一個任務(wù)中可能存在多個同一Activity的實例。l 生命周期中的五種狀態(tài):啟動,運(yùn)行,暫停,停止,銷毀。u啟
15、動:Activity被壓入棧頂。u運(yùn)行:Activity可見并獲得焦點(diǎn),與用戶進(jìn)行交互。u暫停:Activity可見但失去焦點(diǎn)。u停止:Activity被另一個Activity完全覆蓋,不可見,系統(tǒng)可以隨時將其釋放。u銷毀:系統(tǒng)將Activity從內(nèi)存中刪除,Activity被彈出出棧。第三章第三章 Android應(yīng)用程序的控制機(jī)制應(yīng)用程序的控制機(jī)制Android應(yīng)用開發(fā)教程Android Android 應(yīng)用程序生命周期應(yīng)用程序生命周期運(yùn)行狀態(tài)暫停狀態(tài)停止?fàn)顟B(tài)銷毀狀態(tài)被被Dialog或者透明或者透明的的Activity覆蓋覆蓋被另一個被另一個Activity覆蓋,不可見覆蓋,不可見系統(tǒng)內(nèi)存嚴(yán)
16、重系統(tǒng)內(nèi)存嚴(yán)重不足,被回收不足,被回收系統(tǒng)內(nèi)存不足,系統(tǒng)內(nèi)存不足,被回收被回收被覆蓋的被覆蓋的Activity返回返回被重新激被重新激活活發(fā)生異?;蚱渌闆rActivity新實例啟動第三章第三章 Android應(yīng)用程序的控制機(jī)制應(yīng)用程序的控制機(jī)制v Activity的生命周期狀態(tài)轉(zhuǎn)變Android應(yīng)用開發(fā)教程Android Android 應(yīng)用程序生命周期應(yīng)用程序生命周期v Activity 生命周期事件處理函數(shù)生命周期事件處理函數(shù) l onCreate(Bundle):u首先創(chuàng)建時調(diào)用該方法。u執(zhí)行一次性的初始化工作。u提供Bundle參數(shù)p如果Activity之前是被凍結(jié)狀態(tài),其狀態(tài)由Bu
17、ndle提供。p接受參數(shù)為null或由onSaveInstanceState()方法保存的狀態(tài)信息。u其后調(diào)用onStart()或onRestart()方法。 l onStart():u當(dāng)Activity對用戶即將可見時調(diào)用。l onResume():u用戶可以開始與活動進(jìn)行交互時會調(diào)用該方法。第三章第三章 Android應(yīng)用程序的控制機(jī)制應(yīng)用程序的控制機(jī)制Android應(yīng)用開發(fā)教程Android Android 應(yīng)用程序生命周期應(yīng)用程序生命周期v Activity 生命周期事件處理函數(shù)生命周期事件處理函數(shù) l onPause():u活動將進(jìn)入后臺時會運(yùn)行該方法。l onStop():u在一段
18、時間內(nèi)不需要某個活動時,調(diào)用該方法。l onRestart():u將已處于停止?fàn)顟B(tài)的活動重新顯示給用戶。l onDestroy():u銷毀活動前調(diào)用該方法。u如果內(nèi)存不足,系統(tǒng)會終止進(jìn)程,可能不需要調(diào)用該方法。第三章第三章 Android應(yīng)用程序的控制機(jī)制應(yīng)用程序的控制機(jī)制Android應(yīng)用開發(fā)教程Android Android 應(yīng)用程序生命周期應(yīng)用程序生命周期v Activity 生命周期事件處理函數(shù)生命周期事件處理函數(shù) l onSaveInstanceState(Bundle):u調(diào)用該方法讓活動可以保存每個實例的狀態(tài)。l onRestoreInstanceState(Bundle):u使
19、用onSaveInstanceState()方法保存的狀態(tài)來重新初始化某個活動時調(diào)用該方法。第三章第三章 Android應(yīng)用程序的控制機(jī)制應(yīng)用程序的控制機(jī)制Android應(yīng)用開發(fā)教程Android Android 應(yīng)用程序生命周期應(yīng)用程序生命周期(“*”號表示可選)號表示可選)第三章第三章 Android應(yīng)用程序的控制機(jī)制應(yīng)用程序的控制機(jī)制v Activity 生命周期生命周期中函數(shù)的調(diào)用過程中函數(shù)的調(diào)用過程Android應(yīng)用開發(fā)教程Android Android 應(yīng)用程序生命周期應(yīng)用程序生命周期v 生命周期函數(shù)調(diào)用舉例之一生命周期函數(shù)調(diào)用舉例之一l 有兩個界面Activity A和Activ
20、ity B。l 先啟動第一個界面Activity A,方法回調(diào)的次序是: l Activity A不關(guān)閉,跳轉(zhuǎn)第二個Activity B,方法回調(diào)的次序是:onCreate(A)onStart(A)onResume(A)onFreeze(A)onPause(A)onCreate(B)onStart(B)onResume(B)onStop(A)第三章第三章 Android應(yīng)用程序的控制機(jī)制應(yīng)用程序的控制機(jī)制Android應(yīng)用開發(fā)教程Android Android 應(yīng)用程序生命周期應(yīng)用程序生命周期v 生命周期函數(shù)調(diào)用舉例之二生命周期函數(shù)調(diào)用舉例之二l 在點(diǎn)擊back回到第一個界面,這時方法回調(diào)的次
21、序是:l 在點(diǎn)擊Exit退出應(yīng)用時,方法回調(diào)的次序是:onStop(B)onDestroy(B)onPause(A)onStop(A)onDestroy(A)onPause(B)onRestart(A)onStart(A)onResume(A)onActivityforResult(A)第三章第三章 Android應(yīng)用程序的控制機(jī)制應(yīng)用程序的控制機(jī)制Android應(yīng)用開發(fā)教程Android Android 組件間的通信組件間的通信v Intent對象對象l Intent是連接應(yīng)用程序的三個核心組件Activity、Service和BroadcastReceiver的橋梁。l Intent負(fù)責(zé)對
22、應(yīng)用中操作的動作、動作涉及數(shù)據(jù)及附加數(shù)據(jù)進(jìn)行描述。l Intent本身是一個Intent類對象, Intent類都定義在android.content.Intent中。l 一個Intent對象其實就是信息的捆綁。l Intent對象由組件名稱、Action、Data、Category、Extra及Flag六部分組成。第三章第三章 Android應(yīng)用程序的控制機(jī)制應(yīng)用程序的控制機(jī)制Android應(yīng)用開發(fā)教程Android Android 組件間的通信組件間的通信v Intent對象對象l 組件名稱:要處理該Intent的組件名稱。u設(shè)置組件名,該intent對象將被傳遞給組件名指定的類。u如果省
23、略組件名,則在Androidmanifest中,通過使用IntentFilter 來找與Intent最合適的組件。usetComponent()方法:設(shè)置組件名。ugetComponent()方法:讀取組件名。l 行動(Action):一個字符串,用于命名要采取的行動。第三章第三章 Android應(yīng)用程序的控制機(jī)制應(yīng)用程序的控制機(jī)制常量含義CALL_ACTION初始化一個電話呼叫EDIT_ACTION顯示數(shù)據(jù)給用戶進(jìn)行編輯MAIN_ACTION啟動一個任務(wù)的起始Activity,沒有數(shù)據(jù)輸入和返回BATTERY_LOW_ACTION提示電池電量低SCREEN_ON_ACTION屏幕已開啟And
24、roid應(yīng)用開發(fā)教程Android Android 組件間的通信組件間的通信v Intent對象對象l 數(shù)據(jù)(Data):u執(zhí)行動作要操作的數(shù)據(jù),用指向數(shù)據(jù)的一個URI來表示。u例如,指向某聯(lián)系人的URI為:content:/contacts/1,以下是action/data對:第三章第三章 Android應(yīng)用程序的控制機(jī)制應(yīng)用程序的控制機(jī)制常量含義VIEW_ACTION content:/contacts/1顯示標(biāo)識符為“1”的聯(lián)系人的詳細(xì)信息EDIT_ACTION content:/contacts/1編輯標(biāo)識符為“1”的聯(lián)系人的詳細(xì)信息VIEW_ACTION content:/conta
25、cts/顯示所有聯(lián)系人的列表PICK_ACTION content:/contacts/顯示所有聯(lián)系人的列表,并返回選擇的聯(lián)系人信息Android應(yīng)用開發(fā)教程Android Android 組件間的通信組件間的通信v Intent對象對象l 類別(category)u被執(zhí)行動作的附加信息。l 數(shù)據(jù)類型(type)u強(qiáng)制指定數(shù)據(jù)的類型。l 附加信息(extras)u其他所有附加信息的集合。l 標(biāo)志(flag)u指導(dǎo)Android系統(tǒng)啟動一個Activity以及Activity啟動后對其進(jìn)行處理。第三章第三章 Android應(yīng)用程序的控制機(jī)制應(yīng)用程序的控制機(jī)制Android應(yīng)用開發(fā)教程Androi
26、d Android 組件間的通信組件間的通信v Intent過濾器過濾器l Intent過濾器是在manifest文件中進(jìn)行聲明。l 每當(dāng)一個Activity要執(zhí)行一個操作,就會創(chuàng)建一個Intent的對象。l Intent過濾器聲明所指定的組件支持的Intent值。l Intent過濾器使用子標(biāo)簽來進(jìn)行聲明。l 元素:uaction:組件支持的Intent action。ucategory:組件支持的Intent category。utype:組件支持的Intent type。u第三章第三章 Android應(yīng)用程序的控制機(jī)制應(yīng)用程序的控制機(jī)制Android應(yīng)用開發(fā)教程Android Andro
27、id 組件間的通信組件間的通信v Intent過濾器解析過濾器解析 l SDK例程N(yùn)otesList的AndroidManifest.xml u第一個Activity:第三章第三章 Android應(yīng)用程序的控制機(jī)制應(yīng)用程序的控制機(jī)制Android應(yīng)用開發(fā)教程Android Android 組件間的通信組件間的通信v Intent過濾器解析過濾器解析 l SDK例程N(yùn)otesList的AndroidManifest.xml u第二個Activity:第三章第三章 Android應(yīng)用程序的控制機(jī)制應(yīng)用程序的控制機(jī)制Android應(yīng)用開發(fā)教程Android Android 組件間的通信組件間的通信v
28、 Intent過濾器解析過濾器解析 l SDK例程N(yùn)otesList的AndroidManifest.xml u第三個Activity:第三章第三章 Android應(yīng)用程序的控制機(jī)制應(yīng)用程序的控制機(jī)制Android應(yīng)用開發(fā)教程Android Android 組件間的通信組件間的通信v 實例1 - Intent使用案例l 有兩個Activity:ActivityMain和ActivitySub。uActivityMain為首次進(jìn)行的Activity;u使用單擊按鈕來實現(xiàn)兩個Activity的相互跳轉(zhuǎn);u使用Intent對象實現(xiàn)兩個Activity之間的數(shù)據(jù)傳遞;u在標(biāo)題欄顯示當(dāng)前信息。l 項目u
29、項目名為:Activity_Intentu包名為:.sgmsc.Activity_IntentuActivityMain的布局文件為:main.xmluActivityMain的java代碼文件為:ActivityMain.javauActivitySub的布局文件為:subactivity.xmluActivitySub的java代碼文件為:ActivitySub.java第三章第三章 Android應(yīng)用程序的控制機(jī)制應(yīng)用程序的控制機(jī)制Android應(yīng)用開發(fā)教程Android Android 組件間的通信組件間的通信v main.xmll 使用線性布局l 定義一個按鈕u按鈕的id為“butt
30、on1”u按鈕顯示為“進(jìn)入ActivitySub”第三章第三章 Android應(yīng)用程序的控制機(jī)制應(yīng)用程序的控制機(jī)制Android應(yīng)用開發(fā)教程Android Android 組件間的通信組件間的通信v subactivity.xmll 使用線性布局l 定義一個按鈕u按鈕的id為“button2”u按鈕顯示為“返回ActivityMain”第三章第三章 Android應(yīng)用程序的控制機(jī)制應(yīng)用程序的控制機(jī)制Android應(yīng)用開發(fā)教程Android Android 組件間的通信組件間的通信v ActivityMain.javal 加載相關(guān)信息l 聲明事件監(jiān)聽、控件、常量第三章第三章 Android應(yīng)用程
31、序的控制機(jī)制應(yīng)用程序的控制機(jī)制Android應(yīng)用開發(fā)教程Android Android 組件間的通信組件間的通信v 重載onCreate()方法l 創(chuàng)建listener1對象:u創(chuàng)建intent1對象,u使用putExtra()方法將一組名/值對添加到intent1中,為Bundle對象。u使用startActivityForResult()方法啟動intent1對象。第三章第三章 Android應(yīng)用程序的控制機(jī)制應(yīng)用程序的控制機(jī)制Android應(yīng)用開發(fā)教程Android Android 組件間的通信組件間的通信v 重載onCreate()方法l 創(chuàng)建listener1對象;l 顯示main.
32、xml中的布局;l 獲得按鈕,并綁定一個單擊監(jiān)聽 - setOnClickListener(listener1);l 使用setTitle()方法設(shè)置標(biāo)題欄顯示內(nèi)容。第三章第三章 Android應(yīng)用程序的控制機(jī)制應(yīng)用程序的控制機(jī)制Android應(yīng)用開發(fā)教程Android Android 組件間的通信組件間的通信v 重載onActivityResult()方法l 自ActivitySub返回時調(diào)用此方法。l 當(dāng)請求碼為“REQUEST_CODE”時,取回傳參數(shù)值。l 使用getExtra()方法從Bundle對象中獲取名/值對。l 使用getString()方法從Bundle對象中得到“stor
33、e”的值。第三章第三章 Android應(yīng)用程序的控制機(jī)制應(yīng)用程序的控制機(jī)制Android應(yīng)用開發(fā)教程Android Android 組件間的通信組件間的通信v 在onClick()事件中l(wèi) 創(chuàng)建Bundle對象l 使用putString()方法保存名/值對。第三章第三章 Android應(yīng)用程序的控制機(jī)制應(yīng)用程序的控制機(jī)制Android應(yīng)用開發(fā)教程Android Android 組件間的通信組件間的通信v 在ActivitySub中,獲取來自ActivityMain中的值l 使用getIntent()方法返回啟動該Activity的intent對象(即intnet1)。l 使用getExtras
34、()方法返回添加到intent1的Bundle對象中的名/值對。第三章第三章 Android應(yīng)用程序的控制機(jī)制應(yīng)用程序的控制機(jī)制Android應(yīng)用開發(fā)教程Android Android 組件間的通信組件間的通信v Manifest.xmll 聲明了兩個Activity。第三章第三章 Android應(yīng)用程序的控制機(jī)制應(yīng)用程序的控制機(jī)制Android應(yīng)用開發(fā)教程用戶界面狀態(tài)保存用戶界面狀態(tài)保存v 界面狀態(tài)l 一個Activity被激活并運(yùn)行,即為建立了一個Activity的實例。l Activity實例與用戶交互,產(chǎn)生界面狀態(tài)信息。如用戶所選取的值,光標(biāo)的位置等。l 當(dāng)Activity實例進(jìn)入“暫
35、?!惫Α巴V埂睜顟B(tài)時,需要保存這些臨時的狀態(tài)信息。l 保存狀態(tài)信息的方法:uSharedPreferences對象。 uBundle對象。第三章第三章 Android應(yīng)用程序的控制機(jī)制應(yīng)用程序的控制機(jī)制Android應(yīng)用開發(fā)教程用戶界面狀態(tài)保存用戶界面狀態(tài)保存v SharedPreferences對象l 每個Activity都有一個無名的SharedPreferences對象。l 其SharedPreferences對象的訪問權(quán)限是私有的。l SharedPreferences提供一種基于name/value形式的鍵值二元組的存儲方式。l SharedPreferences支持的數(shù)據(jù)類型有:u
36、StringuLonguFloatuIntegeruBooleanl getPreferences():獲取SharedPreferences對象。l 使用put.()方法保存鍵-值對。例如保存字符串型的使用putString()方法。第三章第三章 Android應(yīng)用程序的控制機(jī)制應(yīng)用程序的控制機(jī)制Android應(yīng)用開發(fā)教程用戶界面狀態(tài)保存用戶界面狀態(tài)保存v 使用SharedPreferences對象的一般步驟l 獲得SharedPreferences對象。l 獲得SharedPreferences.Editor對象。l 使用put.()方法保存鍵-值對。l commit()方法進(jìn)行提交。v 例,Activity的SharedPreferences對象讀寫代碼:Protected void saveActivityPre
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GSP相關(guān)知識培訓(xùn)課件
- 皮膚護(hù)膚知識培訓(xùn)課件
- 空調(diào)銷售安裝合同范本
- DB31∕T 693.3-2020 蔬菜工廠化育苗技術(shù)規(guī)程 第3部分:茄果類
- 八省聯(lián)考試卷分析(物理 西南聯(lián)大附中)
- 企業(yè)技術(shù)標(biāo)準(zhǔn)體系的建立、實施與評估
- 酒店承包經(jīng)營合同書
- 員工股權(quán)轉(zhuǎn)讓協(xié)議書
- 零件數(shù)據(jù)采集與逆向工程 習(xí)題答案 任務(wù)五 復(fù)合型零件的數(shù)據(jù)采集
- 副總經(jīng)理聘用協(xié)議
- Unit5 What day is it today?(教學(xué)設(shè)計)-2023-2024學(xué)年教科版(廣州)英語四年級下冊
- 《網(wǎng)絡(luò)信息安全教學(xué)》課件
- 徐州2025年江蘇徐州市口腔醫(yī)院招聘非在編醫(yī)務(wù)人員53人筆試歷年參考題庫附帶答案詳解-1
- 2025年01月2025中國作家協(xié)會所屬單位公開招聘11人筆試歷年典型考題(歷年真題考點(diǎn))解題思路附帶答案詳解
- 影視制作項目委托制作協(xié)議
- 用色彩情感引發(fā)共鳴社交媒體運(yùn)營秘訣
- 廣東2024年12月佛山市教育局公開選調(diào)1名公務(wù)員筆試歷年典型考題(歷年真題考點(diǎn))解題思路附帶答案詳解
- 植物角創(chuàng)設(shè)培訓(xùn)
- 法院生活費(fèi)申請書
- 2025年湖南工藝美術(shù)職業(yè)學(xué)院高職單招職業(yè)技能測試近5年??及鎱⒖碱}庫含答案解析
- 【課件】學(xué)校后勤管理工作
評論
0/150
提交評論