




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
Android開發(fā)環(huán)境的搭建小結(jié)和討論03搭建Android開發(fā)環(huán)境任務(wù)實施02目錄Android開發(fā)環(huán)境概述0101
Android開發(fā)環(huán)境概述Android開發(fā)環(huán)境概述原生態(tài)開發(fā)使用Google公司開發(fā)的AndroidStudio集成開發(fā)工具PC電腦搭建開發(fā)環(huán)境,開發(fā)程序部署到模擬器或者真Android機上
Android開發(fā)環(huán)境概述Android開發(fā)環(huán)境概述2.AndroidStudio開發(fā)工具搭建Android開發(fā)環(huán)境所需軟件及工具1.JavaJDKAndroid開發(fā)環(huán)境概述3.Android內(nèi)核SDK開發(fā)包02搭建Android開發(fā)環(huán)境任務(wù)實施搭建Android開發(fā)環(huán)境任務(wù)實施1.JDK下載(jdk-8u202-windows-x64.exe)
一、Java下載安裝配置搭建Android開發(fā)環(huán)境任務(wù)實施2.JavaJDK安裝
一、Java下載安裝配置運行JDK安裝包程序,把JDK和JRE安裝在統(tǒng)一的路徑JDK:
C:\Android\Java\jdk1.8.0_202JRE:C:\Android\Java\jre1.8.0_202搭建Android開發(fā)環(huán)境任務(wù)實施
一、Java下載安裝配置3.JDK配置創(chuàng)建環(huán)境變量:JAVA_HOMEC:\Anroid\Java\jdk1.8.0_202創(chuàng)建系統(tǒng)變量:CLASSPATH.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar系統(tǒng)環(huán)境變量Path添加%JAVA_HOME%\bin和%JAVA_HOME%\jre\bin搭建Android開發(fā)環(huán)境任務(wù)實施
一、Java下載安裝配置4.測試Java是否安裝配置成功控制臺輸入命令:java-version搭建Android開發(fā)環(huán)境任務(wù)實施1.下載AndroidStudio
二、AndroidStudio下載安裝配置AndroidStudio4.0搭建Android開發(fā)環(huán)境任務(wù)實施2.安裝AndroidStudio二、AndroidStudio下載安裝配置(1)
運行安裝包(2)選擇安裝模塊搭建Android開發(fā)環(huán)境任務(wù)實施2.安裝AndroidStudio二、AndroidStudio下載安裝配置(3)選擇安裝路徑(4)選擇安裝菜單文件夾搭建Android開發(fā)環(huán)境任務(wù)實施2.安裝AndroidStudio二、AndroidStudio下載安裝配置(5)開始安裝(6)安裝完成后,啟動AndroidStudio搭建Android開發(fā)環(huán)境任務(wù)實施2.安裝AndroidStudio二、AndroidStudio下載安裝配置(7)選擇不導(dǎo)入設(shè)置(8)選擇Custom自定義安裝搭建Android開發(fā)環(huán)境任務(wù)實施2.安裝AndroidStudio二、AndroidStudio下載安裝配置(9)選擇JRE安裝的路徑(10)選擇默認樣式搭建Android開發(fā)環(huán)境任務(wù)實施3.安裝SDK二、AndroidStudio下載安裝配置(1)SDK組件安裝(2)模擬器設(shè)置搭建Android開發(fā)環(huán)境任務(wù)實施3.安裝SDK二、AndroidStudio下載安裝配置(3)確認設(shè)置(4)從網(wǎng)絡(luò)下載SDK搭建Android開發(fā)環(huán)境任務(wù)實施3.安裝SDK二、AndroidStudio下載安裝配置(5)下載完成搭建Android開發(fā)環(huán)境任務(wù)實施4.創(chuàng)建模擬器二、AndroidStudio下載安裝配置(1)啟動AndroidStudio,選擇Configure按鈕(2)彈出的下拉框中,選擇AVDManager項搭建Android開發(fā)環(huán)境任務(wù)實施4.創(chuàng)建模擬器二、AndroidStudio下載安裝配置(3)點擊CreateVirtualDevice(4)選擇設(shè)備及對應(yīng)的型號搭建Android開發(fā)環(huán)境任務(wù)實施4.創(chuàng)建模擬器二、AndroidStudio下載安裝配置(5)選擇要使用的虛擬機搭建Android開發(fā)環(huán)境任務(wù)實施4.創(chuàng)建模擬器二、AndroidStudio下載安裝配置(6)選擇下載系統(tǒng)鏡像版本(7)配置虛擬機搭建Android開發(fā)環(huán)境任務(wù)實施4.創(chuàng)建模擬器二、AndroidStudio下載安裝配置(8)啟動虛擬機03小結(jié)及討論EventBus框架小結(jié)及作業(yè)1、介紹了Android開發(fā)環(huán)境使用的軟件和工具;2、搭建Android開發(fā)環(huán)境的步驟。
小結(jié)討論我們已經(jīng)把Android開發(fā)環(huán)境搭建好了并且配置了一個內(nèi)置的模擬器,大家嘗試一下如何安裝夜神、雷電、Genymotion等第三方模擬器?THANKYOU線性布局的實現(xiàn)教學(xué)內(nèi)容、教學(xué)重點、教學(xué)難點本視頻教學(xué)內(nèi)容:線性布局介紹及其實現(xiàn)方法。教學(xué)難點:了解并掌握線性布局的結(jié)構(gòu)。教學(xué)重點:理解線性布局中重要屬性的選擇與使用。實現(xiàn)方法02目錄線性布局介紹01案例演示03小結(jié)及討論0401線性布局介紹線性布局介紹線性布局由LinearLayout類來表示,將容器里的控件一個挨一個地排列起來。排列方向只有兩種:水平排列和垂直排列。通過其android:orientation屬性來設(shè)置。
線性布局概述線性布局介紹當添加某一控件后,寬度超過父容器時,即該控件能顯示部分,但無法完整顯示時,該控件會被壓縮,從而完全顯示,而再添加其他控件時,將不會顯示該控件。高度亦如此。
線性布局概述02實現(xiàn)方法實現(xiàn)方法2.布局內(nèi)添加兩個EditText,一個Button三個控件;1.使用<LinearLayout></LinearLayout>標簽對,并設(shè)置寬度、高度、方向?qū)傩?;開發(fā)步驟3.設(shè)置3個控件ID、寬高、文本顯示等屬性;03案例演示案例演示該程序為一個線性布局的登錄界面。顯示請輸入用戶名,密碼,加上一個登錄按鈕。案例說明案例演示主界面05小結(jié)及討論線性布局小結(jié)及作業(yè)1、Android中的實現(xiàn)線性布局的方法;2、線性布局中排列方向?qū)傩栽O(shè)置。
小結(jié)討論在本案例基礎(chǔ)上,編寫一個使用嵌套的線性布局實現(xiàn)演示案例。THANKYOU表格布局的實現(xiàn)教學(xué)內(nèi)容、教學(xué)重點、教學(xué)難點本視頻教學(xué)內(nèi)容:表格布局介紹及其實現(xiàn)方法。教學(xué)難點:了解并掌握表格布局的結(jié)構(gòu)。教學(xué)重點:理解表格布局中重要屬性的選擇與使用。實現(xiàn)方法02目錄表格布局介紹01案例演示03小結(jié)及討論0401表格布局介紹表格布局介紹表格布局(TableLayout)指以行和列的形式對控件的排列方式進行管理。在表格布局中,通過添加TableRow來添加表格行,TableRow本身也是容器,可以添加其他控件,每添加一個控件,相對于該行添加了一列。
表格布局概述表格布局介紹表格布局中所有列的寬度都一致,列的寬度由該列中最寬的那個單元決定,整個表格布局的寬度則取決于父容器的寬度。
表格布局概述表格布局介紹android:collapseColumns:隱藏指定的列,其值為列所在的序號,從0開始,如果需要隱藏多列,可用逗號隔開這些序號。android:shrinkColumns:收縮指定的列以適合屏幕,使整行能夠完全顯示不會超出屏幕。
表格布局常見屬性02實現(xiàn)方法實現(xiàn)方法2.一個控件占據(jù)一行,共設(shè)置三行,用戶名行、密碼行及按鈕行;1.使用<TableLayout></TableLayout>標簽對,并設(shè)置寬度、高度屬性;開發(fā)步驟3.設(shè)置3行控件的ID、寬高、文本顯示等屬性。03案例演示案例演示該程序為一個表格布局的登錄界面。顯示請輸入用戶名,密碼,加上一個登錄、注冊按鈕。案例說明案例演示主界面05小結(jié)及討論表格布局小結(jié)及作業(yè)1、Android中的實現(xiàn)表格布局的方法;2、表格布局中排列方向?qū)傩栽O(shè)置。
小結(jié)討論在本案例基礎(chǔ)上,編寫一個使用嵌套的表格布局實現(xiàn)演示案例。THANKYOUAlertDialog的實現(xiàn)教學(xué)內(nèi)容、教學(xué)重點、教學(xué)難點本視頻教學(xué)內(nèi)容:Android中的對話框、AlertDialog簡介及實現(xiàn)方法。教學(xué)難點:了解Android中對話框的種類及其作用;掌握實現(xiàn)AlertDialog的方式。教學(xué)重點:了解AlertDialog內(nèi)置的Builder類方法并選擇合適的方法實現(xiàn)定制化的對話框。實現(xiàn)方法02目錄AlertDialog介紹01案例演示03小結(jié)及討論0401AlertDialog介紹AlertDialog介紹對話框是漂浮在Activity之上的小窗口,此時,Activity會失去焦點,而對話框會獲取焦點。對話框通常用于通知,它會臨時打斷用戶,執(zhí)行一些與應(yīng)用程序相關(guān)的小任務(wù),例如任務(wù)執(zhí)行進度或登錄提示等。
AlertDialog概述AlertDialog介紹AlertDialog:警示框,功能最豐富、應(yīng)用最廣的對話框,該對話框可以包含0~3個按鈕,或者是包含復(fù)選框或單選按鈕的列表。ProgressDialog:進度對話框,主要用于顯示進度信息,以進度環(huán)或進度條的形式顯示任務(wù)執(zhí)行進度;4種主要的對話框AlertDialog介紹DatePickerDialog:日期選擇對話框,允許用戶選擇日期;TimePickerDialog:時間選擇對話框,允許用戶選擇時間。4種主要的對話框AlertDialog介紹AlertDialog:是Dialog的子類,它能創(chuàng)建大部分用戶交互的對話框,也是系統(tǒng)推薦的對話框類型。
AlertDialog簡介02實現(xiàn)方法實現(xiàn)方法2.調(diào)用AlertDialog.Builder方法為對話框設(shè)置圖標、標題、內(nèi)容等;1.創(chuàng)建AlertDialog.Builder對象,該對象是AlertDialog的創(chuàng)建器;
實現(xiàn)步驟4.調(diào)用AlertDialog的show()方法顯示對話框。3.調(diào)用AlertDialog.Builder的create()方法創(chuàng)建AlertDialog對話框;實現(xiàn)方法
Builder內(nèi)部類方法方法名作用publicBuildersetTitle設(shè)置對話框標題publicBuildersetMessage設(shè)置對話框內(nèi)容publicBuildersetIcon設(shè)置對話框圖標publicBuildersetPositiveButton添加肯定按鈕(Yes)publicBuildersetNegativeButton添加否定按鈕(No)publicBuildersetNeutralButton添加普通按鈕注意:很多方法的返回類型都是Builder類型,Builder對象每調(diào)用一個方法就是為對話框添加一些內(nèi)容,是對對話框的不斷完善,調(diào)用方法就是構(gòu)造對話框的過程,每次返回的都是已構(gòu)建好的對話框。03案例演示案例演示該程序在主界面設(shè)置三個按鈕,一行對應(yīng)一個按鈕;實現(xiàn)3個按鈕對應(yīng)點擊事件:提示對話框、單選對話框、復(fù)選(列表)對話框。案例說明案例演示2.設(shè)置3行控件的ID、寬高、文本顯示等屬性;1.使用<LinearLayout></LinearLayout>標簽對,在主界面設(shè)置三個按鈕,一行對應(yīng)一個按鈕;開發(fā)步驟3.3個按鈕對應(yīng)點擊事件:提示對話框、單選對話框、復(fù)選(列表)對話框。案例演示主界面案例演示提示對話框案例演示單選對話框案例演示復(fù)選對話框05小結(jié)及討論AlertDialog小結(jié)及作業(yè)1、Android中的4種主要對話框;2、使用AlertDialog.Builder內(nèi)部類構(gòu)建對話框。
小結(jié)討論實現(xiàn)一個簡單提示對話框
THANKYOUAndroid高級用戶界面
設(shè)計--Fragment教學(xué)內(nèi)容、教學(xué)重點、教學(xué)難點本視頻教學(xué)內(nèi)容:Fragment特點優(yōu)勢介紹;實現(xiàn)Fragment;Fragment生命周期。教學(xué)難點:了解Fragment使用場合;掌握實現(xiàn)Fragment的方式。教學(xué)重點:理解Fragment生命周期。實現(xiàn)方法02目錄Fragment介紹01案例演示03小結(jié)及討論0401Fragment介紹Fragment介紹Android運行在各種各樣的設(shè)備中,有小屏幕的手機,還有大屏幕的平板,電視等。同樣的界面在手機上顯示可能很好看,在大屏幕的平板上就未必了,手機的界面放在平板上可能會有過分被拉長、控件間距過大等情況。針對屏幕尺寸的差距,F(xiàn)ragment的出現(xiàn)能做到一個App可以同時適應(yīng)手機和平板。這就是為什么要有Fragment的原因。
Fragment使用場合Fragment介紹Fragment是一種可以嵌入在Activity當中的UI片段用來組建Activity界面的局部模塊,也可以說一個Actiivty界面可以由多個Fragment組成。其行為與Activity很相似,有自己對應(yīng)的布局(包含具體的View),它有自己的生命周期,接收自己的輸入事件,并且可以從運行中的activity中添加或移除一個Fragment必須總是嵌入在一個activity中,同時Fragment的生命周期受activity的影響。
Fragment的特點Fragment介紹onAttach():Fragment和Activity相關(guān)聯(lián)時調(diào)用??梢酝ㄟ^該方法獲取Activity引用,還可以通過getArguments()獲取參數(shù)。
onCreate():Fragment被創(chuàng)建時調(diào)用。
onCreateView():創(chuàng)建Fragment的布局。
onActivityCreated():當Activity完成onCreate()時調(diào)用。
Fragment生命周期Fragment介紹onStart():當Fragment可見時調(diào)用。
onResume():當Fragment可見且可交互時調(diào)用。
onPause():當Fragment不可交互但可見時調(diào)用。
onStop():當Fragment不可見時調(diào)用。
onDestroyView():當Fragment的UI從視圖結(jié)構(gòu)中移除時調(diào)用。
Fragment生命周期Fragment介紹onDestroy():銷毀Fragment時調(diào)用。
onDetach():當Fragment和Activity解除關(guān)聯(lián)時調(diào)用。
Fragment生命周期Fragment介紹
當一個Fragment被創(chuàng)建的時候,需調(diào)用以下生命周期方法:onAttach(),onCreate(),onCreateView(),onActivityCreated()。
當這個Fragment對用戶可見的時候,需調(diào)用:onStart(),onResume()。
Fragment生命周期解析Fragment介紹
當這個Fragment進入后臺模式需調(diào)用:onPause(),onStop()。
當這個Fragment被銷毀或者是持有它的Activity被銷毀了,調(diào)用:onPause(),onStop(),onDestroyView(),onDestroy()onDetach()。
Fragment生命周期解析02實現(xiàn)方法Fragment實現(xiàn)方法FragmentManager宿主環(huán)境指的是其管理類,通常在Activity中通過接口getSupportFragmentManager或者getFragmentManager獲得FragmentManager對象,可以認為Activity是FragmentManager的宿主環(huán)境類。FragmentManager宿主環(huán)境類狀態(tài)變化時(如onStart,onResume,onStop等回調(diào)),FragmentManager的狀態(tài)也隨之更新(FragmentManager類有一個成員變量mCurState來記錄當前狀態(tài)),同時會同步其管理的所有Fragment的狀態(tài)。從用戶的角度來看,FragmentManager的宿主環(huán)境類管理了一系列Fragment,并且Fragment隨著FragmentMannager的宿主環(huán)境類的狀態(tài)變化而變化。
三者間的關(guān)系如下圖所示:FragmentManager宿主環(huán)境Fragment實現(xiàn)方法FragmentManager宿主環(huán)境FragmentManager初始化
FragmentManager必須初始化完成,才能管理Fragment。這里的初始化完成指的是通過構(gòu)造器創(chuàng)建FragmentManager對象以后,調(diào)用其attach方法。
如果FragmentManager是宿主類是Activity,可以在Activity中使用getFragmentManager獲得FragmentManager對象。Activity類中存在成員變量(Activity。java)。03案例演示案例演示新建一個左側(cè)Fragment的布局left_fragment.xml,再新建一個右側(cè)Fragment的布局right_fragment.xml,點擊左側(cè)布局的按鈕,右側(cè)布局切換成另一個新布局。本案例采用系統(tǒng)自帶的樣式文件實現(xiàn)Fragment列表視圖。案例說明案例演示2。獲取FragmentManager,在Activity中可以直接調(diào)getSupportFragmentManager()方法獲??;1。創(chuàng)建待添加Fragment的實例;動態(tài)添加Fragment的步驟3。開啟一個事務(wù),通過調(diào)用beginTransaction()方法開啟。4。向容器內(nèi)添加或替換Fragment。提交事務(wù),調(diào)用commit()方法來完成。案例演示主界面案例演示點擊切換后主界面05小結(jié)及討論Fragment小結(jié)及作業(yè)1、總結(jié)案例中Fragment生命周期;2、Fragment使用場合。
小結(jié)討論很多平板應(yīng)用采用的都是雙頁模式,那么怎樣才能在運行時判斷程序應(yīng)該是使用雙頁模式還是單頁模式呢?
THANKYOUAndroid用戶界面
設(shè)計--ListView教學(xué)內(nèi)容、教學(xué)重點、教學(xué)難點本視頻教學(xué)內(nèi)容:列表視圖;實現(xiàn)ListView;Adapter適配器。教學(xué)難點:了解列表視圖的實現(xiàn)原理及4種列表控件;掌握實現(xiàn)ListView的方式。教學(xué)重點:理解Adapter適配器的概念并懂得正確使用Adapter為列表添加數(shù)據(jù)。實現(xiàn)方法02目錄ListView介紹01案例演示03小結(jié)及討論0401ListView介紹ListView介紹列表視圖是Android系統(tǒng)中比較常用的界面控件,它主要包含兩方面信息:數(shù)據(jù)源和每項數(shù)據(jù)顯示的格式。
ListView概述ListView介紹這兩者之間通過適配器(Adapter)建立關(guān)聯(lián),適配器充當著媒人的角色,在為數(shù)據(jù)源與每項數(shù)據(jù)顯示的格式介紹親事之前,媒人需要對雙方都要有所了解,因此創(chuàng)建Adapter時需傳入數(shù)據(jù)源和每項數(shù)據(jù)顯示的格式對應(yīng)的布局文件作為參數(shù)。
ListView概述ListView介紹通過列表控件的setAdapter()方法將列表與數(shù)據(jù)關(guān)聯(lián)起。
ListView概述ListView介紹AutoCompleteTextViewSpinnerListViewExpandableListView4種列表控件ListView介紹
AutoCompleteTextView運行效果圖ListView介紹
Spinner運行效果圖ListView介紹
復(fù)雜列表視圖運行效果圖ListView介紹
擴展下拉列表運行效果圖02實現(xiàn)方法ListView介紹Adapter適配器案例演示SimpleAdapter:是一個簡單的Adapter,它可以將靜態(tài)的數(shù)據(jù)關(guān)聯(lián)到XML布局文件中的某個View控件上,可以將列表中的數(shù)據(jù)指定為Map對象的集合。Map對象中的每一個鍵對應(yīng)于列表中的每一項的一部分數(shù)據(jù)。而Map對象則包含了每一項的所有數(shù)據(jù)。也需要在XML文件中定義每一項數(shù)據(jù)的顯示視圖(控件),并且要與Map對象中的關(guān)鍵字(鍵)建立一一映射關(guān)系。
常用的AdapterListView介紹常用的Adapter03案例演示案例演示ListView允許用戶通過上下滑動來將屏幕外的數(shù)據(jù)滾動到屏幕內(nèi),同時屏幕內(nèi)原有的數(shù)據(jù)滾動出屏幕,從而顯示更多的數(shù)據(jù)內(nèi)容。本案例采用系統(tǒng)自帶的樣式文件實現(xiàn)ListView列表視圖。案例說明實現(xiàn)方法2.通過合適的適配器Adapter為ListView添加數(shù)據(jù);1.在布局文件中添加一個ListView控件;以控件形式實現(xiàn)ListView思考:
是否還有其他方法?可以用Activity類自身繼承ListView來實現(xiàn)列表?。?將Adapter與ListView匹配:listView.setAdapter(adapter)。案例演示主界面05小結(jié)及討論ListView小結(jié)及作業(yè)1、Android中的列表視圖;2、如何使用Adapter配置ListView內(nèi)容。
小結(jié)討論使用ArrayAdapter實現(xiàn)ListView。
THANKYOUAndroid用戶界面
設(shè)計--RecyclerView教學(xué)內(nèi)容、教學(xué)重點、教學(xué)難點本視頻教學(xué)內(nèi)容:RecyclerView視圖概述;實現(xiàn)RecyclerView;RecyclerView
Adapter適配器。教學(xué)難點:了解列表視圖的實現(xiàn)原理;掌握實現(xiàn)RecyclerView的方式。教學(xué)重點:理解Adapter適配器的概念并懂得正確使用Adapter為RecyclerView添加數(shù)據(jù)。實現(xiàn)方法02目錄RecyclerView介紹01案例演示03小結(jié)及討論0401RecyclerView介紹RecyclerView介紹RecyclerView是Android一個更強大的控件,其不僅可以實現(xiàn)和ListView同樣的效果,還有優(yōu)化了ListView中的各種不足。其可以實現(xiàn)數(shù)據(jù)縱向滾動,也可以實現(xiàn)橫向滾動(ListView做不到橫向滾動)。
RecyclerView概述RecyclerView介紹支持不同方向,不同排版模式,實現(xiàn)多種展現(xiàn)數(shù)據(jù)的形式,涵蓋了ListView,GridView,瀑布流等數(shù)據(jù)表現(xiàn)的形式;內(nèi)部實現(xiàn)了回收機制,無需我們考慮View的復(fù)用情況;取消了onItemClick等點擊事件,需要自己手動去寫。
RecyclerView的特點RecyclerView介紹RecyclerView有四級緩存。包括:屏幕內(nèi)緩存:在屏幕中顯示的ViewHolder。緩存到mChangedScrap(緩存數(shù)據(jù)已經(jīng)改變的ViewHolder)和mAttachedScrap中。屏幕外緩存:列表滑動出屏幕時,ViewHolder會被緩存。緩存到mCachedViews中。(默認大小為2。大小由mViewCacheMax決定。Recyclerview.setItemViewCacheSize(),可以設(shè)置屏幕外緩存的大?。?。緩存池:屏幕外緩存的mCachedViews已滿時,會將ViewHolder緩存到RecycledViewPool中。
RecyclerView緩存機制原理RecyclerView介紹RecyclerView有四級緩存。包括:屏幕內(nèi)緩存:在屏幕中顯示的ViewHolder。緩存到mChangedScrap(緩存數(shù)據(jù)已經(jīng)改變的ViewHolder)和mAttachedScrap中。屏幕外緩存:列表滑動出屏幕時,ViewHolder會被緩存。緩存到mCachedViews中。(默認大小為2。大小由mViewCacheMax決定。Recyclerview.setItemViewCacheSize(),可以設(shè)置屏幕外緩存的大?。?。緩存池:屏幕外緩存的mCachedViews已滿時,會將ViewHolder緩存到RecycledViewPool中。
RecyclerView優(yōu)勢02實現(xiàn)方法RecyclerView介紹Adapter適配器RecyclerView是在Android5.0版本作為support-v7的一個組件出現(xiàn),高效替代了最初的ListView等列表組件。使用上實現(xiàn)了視圖代碼解耦,功能上具備強大的item復(fù)用機制,并且提供默認多種LayoutMananger用來處理多種布局。03案例演示案例演示本案例使用RecyclerView視圖以瀑布流形式展示圖片。案例說明實現(xiàn)方法2.修改activity_main.xml,綁定控件;1.在項目中導(dǎo)入recyclerview類庫;實現(xiàn)RecyclerView步驟3.定義適配器Adapter,繼承RecyclerView.Adapter,指定其泛型;4.使用LinerLayoutManager控制顯示樣式。案例演示主界面05小結(jié)及討論RecyclerView小結(jié)及作業(yè)1、Android中的RecyclerView列表視圖;2、如何使用Adapter配置RecyclerView內(nèi)容。
小結(jié)討論1、RecyclerView可以用ViewType來區(qū)分不同的item,也可以滿足需求,但還是存在一些問題,比如:1,在item過多邏輯復(fù)雜列表界面,Adapter里面的代碼量龐大,邏輯復(fù)雜,后期難以維護。2,每次增加一個列表都需要增加一個Adapter,重復(fù)搬磚,效率低下。如何改善?
THANKYOUAndroid事件處理登錄功能點擊事件任務(wù)實施03Android事件監(jiān)聽02任務(wù)小結(jié)與討論04目錄Android事件概述0101Android事件概述Android事件概述事件監(jiān)聽器Android組件對象上發(fā)生相應(yīng)的操作時,Android框架會調(diào)用界面事件的公開回調(diào)方法Android事件概述事件處理程序02Android事件監(jiān)聽Android事件監(jiān)聽外部類事件監(jiān)聽匿名內(nèi)部類事件監(jiān)聽Android事件監(jiān)聽有四種方式接口事件監(jiān)聽布局綁定事件監(jiān)聽Android事件監(jiān)聽設(shè)置Button的監(jiān)聽器初始化控件匿名內(nèi)部類事件監(jiān)聽Android事件監(jiān)聽外部類的使用定義外部類外部類事件監(jiān)聽Android事件監(jiān)聽調(diào)用setOnClickListener,參數(shù)是當前this對象Activity這個類實現(xiàn)onClickListener這個接口接口事件監(jiān)聽Android事件監(jiān)聽(1)在布局文件Button按鈕組件添加onClick屬性布局綁定事件監(jiān)聽Android事件監(jiān)聽(2)布局文件對應(yīng)Activity自定義一個方法,傳入一個View組件作為參數(shù)布局綁定事件監(jiān)聽03登錄功能點擊事件任務(wù)實施登錄功能點擊事件任務(wù)實施1.創(chuàng)建布局文件實現(xiàn)步驟登錄功能點擊事件任務(wù)實施2.初始化MainActivity實現(xiàn)步驟登錄功能點擊事件任務(wù)實施3.通過匿名類實現(xiàn)登錄按鈕的點擊事件實現(xiàn)步驟04任務(wù)小結(jié)與討論任務(wù)小結(jié)及作業(yè)1、Android事件基本知識;2、Android事件監(jiān)聽四種實現(xiàn)方式及綜合應(yīng)用。
小結(jié)討論參照任務(wù)實現(xiàn),分別用其它三種方式分別實現(xiàn)登錄功能登錄按鈕的點擊事件?THANKYOUActivity基礎(chǔ)
Activity的生命周期02目錄什么是Activity01Activity基礎(chǔ)小結(jié)及討論0301什么是Activity什么是ActivityActivity是Android的四大組件之一,它的中文意思是活動。Activity為用戶提供可視化界面,用戶可以它用來交互完成某項任務(wù),例如撥號、拍照、發(fā)送email、看地圖等。同時每一個activity被給予一個窗口,在上面可以繪制用戶接口。02Activity的生命周期Activity的生命周期Activity的生命周期主要包含7個方法(onCreate、onStart、onResume、onPause、onStop、onDestroy、onRestart)和6個狀態(tài)(Created、Started、Resumed、Paused、Stopped、Destroyed)。完整生命周期從回調(diào)onCreate方法開始,到回調(diào)onDestroy方法結(jié)束。可見生命周期從回調(diào)onStart方法開始,到回調(diào)onStop方法結(jié)束。前臺生命周期從回調(diào)onResume方法開始,到回調(diào)onPause方法結(jié)束。03Activity基礎(chǔ)小結(jié)及討論Activity與Service交互小結(jié)及作業(yè)1、什么是Activity;2、Activity的生命周期
小結(jié)討論Activity的生命周期的7個方法和6個狀態(tài)分別是什么?THANKYOUActivity與IntentIntent的常用方法03Intent的七個屬性02目錄Intent的概述01Activity與Intent小結(jié)及作業(yè)0401Intent的概述Intent的概述Intent被稱之為意圖,它是一種將要被執(zhí)行的動作進行抽象的描述,Intent可以實現(xiàn)在不同組件之間的通訊。Intent不僅可用于應(yīng)用程序之間,也可用于應(yīng)用程序內(nèi)部的Activity、Service和broadcast之間的交互操作。如使用startActivity(Intent)/startActivityForResult(Intent)啟動一個Activity,startService(Intent)/bindService(Intent)啟動一個Service。Intent在Android應(yīng)用中可根據(jù)開啟目標組件方式的不同分為顯示Intent和隱式Intent。02Intent的七個屬性Intent的七個屬性1、ComponentName(組件名稱):由組件所在的應(yīng)用程序配置文件中設(shè)置包名+組件的類名組成。2、Action(動作):代表Intent要完成的一個抽象“動作”。3、Category(類別):為Action提供額外的附加類別信息。4、Data(數(shù)據(jù)):用于向Action屬性提供操作的數(shù)據(jù)。5、Extras(額外):用于多個Action之間的數(shù)據(jù)交換。6、lags(標記):表示不同來源的標記,用于Android如何啟動Activity及啟動完成后如何對待。7、Type(MIME類型):用于指定Data所制定的Uri對應(yīng)MIME類型。03Intent的常用方法174Intent的常用方法方法描述publicvoidstartActivity(Intentintent)啟動一個Activity,并通過Intent傳遞數(shù)據(jù)Public
voidstartActivityForResult(Intentintent,intrequestCode)啟動并接收另一個Activity返回的數(shù)據(jù)PublicIntentgetIntent()返回啟動當前Activity程序的IntentPublicvoidfinish()自動返回之前的Activity程序PublicvoidonActivityResult(intRequestCode,intResponseCode,IntentData)當需要接收Intent返回數(shù)據(jù)并對其結(jié)果進行處理時,重寫該方法175Intent的常用方法1.顯式Intent顯式Intent可以直接通過名稱開啟指定的目標組件,每次開啟的目標組件只有一個,如下代碼所示。Intentintent=newIntent(this,LoginActivity.class);創(chuàng)建一個Intent對象,其中括號中的第1個參數(shù)為Context表示當前的Activity對象,第2個參數(shù)LoginActivity表示要啟動的目標ActivitystartActivity(intent);調(diào)用Activity的startActivity啟動目標組件。176Intent的常用方法2.隱式Intent隱式Intent不直接指定組件名稱,而是通過指定Intent的action和category等屬性,啟動組件時系統(tǒng)通過AndroidManifest.xml文件中的Intent-filter逐一匹配目標組件,當出現(xiàn)多個滿足要求的組件時則彈出選擇啟動組件的對話框。177Intent的常用方法隱式Intent示例Intentintent=newIntent();Intentintent=newIntent();
intent.setAction("ent.START");
intent.addCategory(Intent.CATEGORY_DEFAULT);
startActivity(intent);
AndroidManifest.xml文件配置信息<activityandroid:name=".LoginActivity">
<intent-filter>
<actionandroid:name="ent.START"/>
<categoryandroid:name="ent.category.DEFAULT"/>
</intent-filter>
</activity>
178Intent的常用方法常用隱式Intent的Action動作常量Intent常量動作名稱常量值描述ACTION_MAINent.action.MAINApp啟動時的入口ACTION_VIEWent.action.VIEW顯示數(shù)據(jù)ACTION_EDITent.action.EDIT顯示可編輯的數(shù)據(jù)ACTION_SENDent.action.SEND分享內(nèi)容ACTION_CALLent.action.CALL直接撥號ACTION_DIALent.action.DIAL準備撥號ACTION_SENDTOent.action.SENDTO發(fā)送短信ACTION_ANSWERent.action.ANSWER接聽電話ACTION_SEARCHent.action.SEARCH導(dǎo)航欄SearchView的搜索動作ACTION_CHOOSERent.action.CHOOSER顯示一個Activity選擇器ACTION_GET_CONTENTent.action.GET_CONTENT選擇返回的數(shù)據(jù)類型04Activity與Intent的小結(jié)Activity與Intent小結(jié)及作業(yè)1、了解Intent的屬性;2、Intent的常用方法。
小結(jié)討論如何區(qū)分顯示Inten、隱式Intent?THANKYOUActivity的數(shù)據(jù)傳遞Activity的數(shù)據(jù)回傳02目錄Intent數(shù)據(jù)的傳遞01Activity的數(shù)據(jù)傳遞小結(jié)0301Intent數(shù)據(jù)的傳遞Intent數(shù)據(jù)的傳遞創(chuàng)建Intent對象Intentintent=newIntent(this,LoginActivity.class);使用Intent發(fā)送數(shù)據(jù)的兩種方式(1)data:使用setData()方法傳遞Uri類型的數(shù)據(jù)如:intent.setData(Uri.fromFile(newFile("/sdcard/image.jpg")));intent.setData(Uri.parse(""));(2)extras:使用Key-Value對傳遞數(shù)據(jù)intent.putExtra(Stringkey,Stringvalue);傳遞單個數(shù)據(jù)intent.putExtra(Stringname,String[]value);傳遞字符串數(shù)組intent.putExtras(Bundlebundle);傳遞多個不同類型的數(shù)據(jù)Intent數(shù)據(jù)的傳遞使用Intent接收數(shù)據(jù)的兩種方式(1)data:使用getData()方法接收Uri類型的數(shù)據(jù),如:UrilocationUri=intent.getData();(2)extras:接收Key-Value對數(shù)據(jù)Stringvalue=intent.getStringExtra("key");Bundlebundle=intent.getExtras();02Activity的數(shù)據(jù)回傳Activity的數(shù)據(jù)回傳Activity數(shù)據(jù)回傳的流程如下圖5-4-1所示MainActivityonActivityResult()接收處理回傳數(shù)據(jù)
LoginActivity調(diào)用startActivityForResult()啟動ActivitysetResult()回傳數(shù)據(jù)圖示5-4-1Activity數(shù)據(jù)回傳Activity的數(shù)據(jù)回傳數(shù)據(jù)回傳操作內(nèi)容:在MainActivity中的主要內(nèi)容:1、創(chuàng)建Intent對象2、調(diào)用startActivityForResult(Intentintent,intRequestCode)啟動另一個Activity3、重寫onActivityResult()方法接收并處理回傳數(shù)據(jù)在LoginActivity中的主要內(nèi)容1、創(chuàng)建一個Intent對象2、調(diào)用putExtra()傳遞回傳的數(shù)據(jù)3、設(shè)置返回結(jié)果4、調(diào)用finish()關(guān)閉這個ActivityActivity的數(shù)據(jù)回傳數(shù)據(jù)回傳案例Activity的數(shù)據(jù)回傳數(shù)據(jù)回傳案例主要代碼Intentintent=newIntent(this,LoginActivity.class);
startActivityForResult(intent,0x11);
protectedvoidonActivityResult(int
requestCode,int
resultCode,@NullableIntentdata){
super.onActivityResult(requestCode,resultCode,data);
if(requestCode==0x11&&responseCode==0x11){Bundlebundle=data.getExtras();intimage=bundle.getInt(“imageId”);img.setImageResource(image)
}
}
Intentintent=newIntent();bundle.putInt(“imageId”,iamges[i]);
intent.putExtra(bundle);
setResult(0x11,intent);
finish();
03Activity的數(shù)據(jù)傳遞小結(jié)及作業(yè)Activity的數(shù)據(jù)傳遞小結(jié)及作業(yè)1、掌握Intent數(shù)據(jù)的傳遞;2、掌握Activity的數(shù)據(jù)回傳。
小結(jié)討論Activity的數(shù)據(jù)回傳的主要不止包括哪些?THANKYOUActivity的啟動模式棧內(nèi)復(fù)用模式03棧頂復(fù)用模式02全局唯一模式04目錄標準啟動模式01小結(jié)與思考0501標準啟動模式標準啟動模式standard:標準啟動模式(默認啟動模式),每次都會啟動一個新的activity實例,Activity的onCreate、onStart、onResume方法都會被調(diào)用,在該模式下,啟動的Activity會依照啟動順序被依次壓入Task中。02棧頂復(fù)用模式棧頂復(fù)用模式,該模式下如果Activity實例位于當前任務(wù)棧頂,就重用棧頂實例,并回調(diào)該實例onNewIntent()方法,否則創(chuàng)建新的實例。singleTop:棧頂復(fù)用模式03棧內(nèi)復(fù)用模式棧內(nèi)復(fù)用模式,該模式啟動的Activity只會存在相應(yīng)的Activity的taskAffinit任務(wù)棧中,同一時刻系統(tǒng)中只會存在一個實例。如果棧內(nèi)已存在該實例則直接使用,同時清理當前Task任務(wù)棧該實例之上的所有Activity,并回調(diào)onNewIntent()方法。singleTask:棧內(nèi)復(fù)用模式04全局唯一模式全局唯一模式,在這種模式下啟動的Activity獨自占用一個Task任務(wù)棧,同一時刻系統(tǒng)中只會存在一個實例,如果棧中已存在該實例則直接使用,并回調(diào)onNewIntent()方法。singleInstance:全局唯一模式05小結(jié)與思考小結(jié)與思考1、Activity的四種啟動模式
小結(jié)討論思考棧頂復(fù)用和棧內(nèi)復(fù)用模式的區(qū)別?THANKYOUFragment基礎(chǔ)Fragment的生命周期02目錄Fragment概念01生命周期流程中各方法的作用03小結(jié)與思考0401Fragment概念Fragment概念Fragment:稱之為碎片也可以看作是一個小型的Activity,但是Fragment并不能單獨使用,它需要嵌套在Activity中使用。雖然Fragment擁有自己的生命周期,但是還是會受到宿主Activity的生命周期的影響,比如Activity被銷毀了,則Fragment也會跟著銷毀02Fragment的生命周期Fragment和Activity一樣都有自己的生命周期,F(xiàn)ragment生命周期如右圖所示Fragment的生命周期03生命周期流程中各方法的作用生命周期流程中各方法的作用onInfalte()該方法只在直接用標簽在布局文件中定義的時候才會被調(diào)用onAttach()當該Fragment添加到Activity中會回調(diào),只會回調(diào)一次onCrate()創(chuàng)建Fragment時回調(diào),只會回調(diào)一次onCreateView()每次創(chuàng)建、繪制該Fragment的View組件時回調(diào)該方法onActivityCreated()當Fragment所在的Activity被啟動完成后回調(diào)該方法onStart()動Fragment時被回調(diào),此時Fragment可見onResume()恢復(fù)Fragment時被回調(diào),獲取焦點時回調(diào)onPause()暫停Fragment時被回調(diào),失去焦點時回調(diào)onStop()停止Fragment時被回調(diào),F(xiàn)ragment不可見時回調(diào)onDestroyView()銷毀與Fragment有關(guān)的視圖,但未與Activity解除綁定onDestroy()銷毀Fragment時被回調(diào)onDetach()與onAttach相對應(yīng),當Fragment與Activity關(guān)聯(lián)被取消時調(diào)用04小結(jié)與思考小結(jié)與思考Activity的數(shù)據(jù)傳遞小結(jié)及作1、了解Fragment的概念;2、掌握Fragment的生命周期。
小結(jié)討論思考Fragment的生命周期與Activity的異同點?THANKYOUFragment與Activity的通信Activity向Fragment傳遞數(shù)據(jù)03動態(tài)添加Fragment02Fragment向Activity傳遞數(shù)據(jù)04目錄Activity與Fragment通信方式01小結(jié)與思考0501Activity與Fragment通信方式Activity與Fragment通信方式Activity與Fragment之間通信,以及同屬于一個Activity的Fragment之間的通信方式有以下六種:1、通過構(gòu)造器2、通過廣播3、通過EventBus4、通過接口回調(diào)5、通過ViewModel6、通過Handler02Activity動態(tài)添加FragmentActivity動態(tài)添加Fragment動態(tài)添加Fragment的步驟:創(chuàng)建需要創(chuàng)建一個Fragment的實例對象獲取FragmentManager(Fragment管理器)的實例開啟FragmentTransaction(事務(wù))向Activity的布局容器(一般為FrameLayout)中添加Fragment通過commit()方法提交事務(wù)03Activity向Fragment傳遞數(shù)據(jù)226Activity向Fragment傳遞數(shù)據(jù)Activity傳值給Fragment的方法:方法一:(Fragment是動態(tài)加載的)在activity中建一個bundle,把要傳的值存入bundle,然后通過fragment的setArguments(bundle)傳到fragment,在fragment中,用getArguments接收
在Activity中編寫以下代碼:
在Fragment中編寫:227Activity向Fragment傳遞數(shù)據(jù)Activity傳值給Fragment的方法:方法二:(Fragment是靜態(tài)加載的)在Fragment中設(shè)置set,get方法,在activity中獲取Fragment對象,fragment.setValue(),Fragment中g(shù)etValue()
04Fragment向Activity傳遞數(shù)據(jù)Fragment向Activity傳遞數(shù)據(jù)Fragment向Activity傳值定義一個回調(diào)接口,讓包含該Fragment的Activity實現(xiàn)該回調(diào)接口,F(xiàn)ragment獲取該接口對象,發(fā)送數(shù)據(jù)。步驟如下:fragment中準備回調(diào)接口接口中聲明傳值的回調(diào)方法在fragment中定義變量privateMyListenermyListener重寫fragment中的onAttach()方法:listener=(MyLisener)getActivity();fragment觸發(fā)事件時回傳值A(chǔ)ctivity中實現(xiàn)回調(diào)接口重寫回調(diào)方法獲取回傳的值并顯示05小結(jié)與思考小結(jié)與思考1、了解Activity與Fragment的通信方式;2、Activity與Fragment間的數(shù)據(jù)傳遞。
小結(jié)討論思考Activity與Fragment之間的數(shù)據(jù)雙向傳遞是怎么樣實現(xiàn)的?THANKYOU服務(wù)的基本概念如何創(chuàng)建服務(wù)03服務(wù)的兩種狀態(tài)02目錄服務(wù)的概念0101服務(wù)的概念服務(wù)的概念
Service是Android的四大組件之一,Service沒有可視化視圖組件,同時Service不是線程,也不是在主線程外的方法。它是一種在后臺運行而無需與用戶直接交互的組件,主要用于后臺運行及跨進程訪問
Service一般由Activity啟動,但是不受Activity的生命周期的影響,它擁有自己的生命周期,適用于長期運行或重復(fù)的操作02服務(wù)的兩種狀態(tài)服務(wù)的兩種狀態(tài)Started:Android的應(yīng)用程序組件如活動,通過startService()啟動了服務(wù),則服務(wù)是Started狀態(tài)。一旦服務(wù)啟動,則它可以在后臺無限期運行,即使啟動服務(wù)的組件已經(jīng)被銷毀。通過startService()方法啟動的服務(wù),需要自身調(diào)用stopSelf()方法或者其他組件調(diào)用stopService()方法時服務(wù)才能停止服務(wù)的兩種狀態(tài)
Bound:當Android的應(yīng)用程序組件通過bindService()綁定了服務(wù),則服務(wù)是Bound狀態(tài)。Bound狀態(tài)的服務(wù)提供了一個客戶服務(wù)器接口來允許組件與服務(wù)進行交互,如發(fā)送請求、獲取結(jié)果、跨進程通信等。通過bindService()方法啟動的服務(wù),需要調(diào)用onUnbind()方法解除綁定之后服務(wù)才會被銷毀。03如何創(chuàng)建服務(wù)241如何創(chuàng)建服務(wù)Service通過Context.startService()或Context.bindService()創(chuàng)建。服務(wù)需在AndroidManifest.xml注冊,如下代碼所示。<serviceandroid:name=".MyService"android:enabled="true"android:exported="true"></service>intent=newIntent(this,MyService.class);04服務(wù)的基本概念
小節(jié)及討論服務(wù)的基本概念小結(jié)及討論1、服務(wù)的兩種狀態(tài)2、如何創(chuàng)建服務(wù)
小結(jié)討論Started狀態(tài)的服務(wù)如何停止?THANKYOU服務(wù)的生命周期Service生命周期驗證03Service生命周期函數(shù)解析02目錄Service生命周期0101Service生命周期Service生命周期Service與Activity類似,也擁有自己的生命周期函數(shù),在不同的時刻,系統(tǒng)會調(diào)用對應(yīng)的Service生命周期函數(shù),與Activity聲明周期相比,Service的生命周期則更加簡單02Service生命周期
函數(shù)解析Service生命周期函數(shù)解析onCreate():當Service第一次創(chuàng)建時被系統(tǒng)調(diào)用
onStartCommand():當通過startService()啟動Service時被調(diào)用onBind(intent):必須實現(xiàn)的方法,返回一個綁定的接口給
Service,當通過bindService()啟動Service時被調(diào)用onDestroy():當調(diào)用stopService()停止服務(wù)時被系統(tǒng)調(diào)用03Service生命周期驗證252Service生命周期驗證①編寫一個服務(wù)類繼承Service類,重寫onBind()和onStartCommand()②在AndroidManifest.xml中,使用<service>標簽注冊服務(wù)③啟動/綁定服務(wù)④停止/解綁服務(wù)253Service生命周期驗證publicclassMyServiceextendsService{privatefinalStringTAG="Myservice";@OverridepublicIBinderonBind(Intentintent){Log.i(TAG,"onBind方法被調(diào)用!");returnnull;}@OverridepublicvoidonCreate(){Log.i(TAG,"onCreate方法被調(diào)用!");super.onCreate();}@OverridepublicintonStartCommand(Intentintent,intflags,intstartId){Log.i(TAG,"onStartCommand方法被調(diào)用!");returnsuper.onStartCommand(intent,flags,startId);}@OverridepublicvoidonDestroy(){Log.i(TAG,"onDestory方法被調(diào)用!");super.onDestroy();}}<serviceandroid:name=".Myservice"><intent-filter><actionandroid:name="com.jay.example.service.My_service"/></intent-filter></service>publicclassMainActivityextendsActivity{
privateButtonstart;privateButtonstop;
@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);
start=(Button)findViewById(R.id.btnstart);stop=(Button)findViewById(R.id.btnstop);//創(chuàng)建啟動Service的Intent,以及Intent屬性finalIntentintent=newIntent();......05服務(wù)的生命周期
小結(jié)及討論服務(wù)的生命周期小結(jié)及討論1、Service生命周期函數(shù)2、驗證Service生命周期
小結(jié)討論Service生命周期與Activity生命周期相比有什么區(qū)別?THANKYOUActivity與Service的交互前臺服務(wù)介紹03Activity與Serice交互流程02前臺服務(wù)的實現(xiàn)04目錄Activity與Service交互介紹0101Activity與Service交互介紹Activity與Service交互介紹在日常的應(yīng)用中Service與Activity之間的通信是非常普遍的,例如我們啟動一個下載的后臺Service,同時知道Service中下載任務(wù)的進度。則需要使用到Service與Activity之間的通信,Service與Activity之間交流的媒介就是Service中的onBind()方法及返回一個自定義的Binder對象。02Activity與Serice交互流程Activity與Serice交互流程Service與Activity的基本交互流程:在自定義Service中,自定義一個Binder類,將需要暴露的方法都寫到該類中;并實例化自定義Binder類,重寫onBind()方法,返回Binder對象。Activity類中實例化一個ServiceConnection對象,重寫onServiceConnected()方法,獲取Binder對象,調(diào)用相關(guān)方法。ServiceConnection回調(diào)接口用于接收Connected和Disconnected事件。bindService是異步執(zhí)行的,必須通過響應(yīng)onServiceConnected事件獲取Service實例,然后才能執(zhí)行一些初始化工作。03前臺服務(wù)介紹264前臺服務(wù)
前臺服務(wù)是在系統(tǒng)內(nèi)存不足的時候不允許系統(tǒng)殺死的服務(wù)。雖然通常情況下Service一般都是運行在后臺,但是Service的系統(tǒng)優(yōu)先級是比較低,當系統(tǒng)內(nèi)存不足的時候,就有可能回收正在后臺運行的Service,對于這種情況我們可以使用前臺服務(wù),從而讓Service不被系統(tǒng)殺死,例如狀態(tài)欄顯示的Notification。
04前臺服務(wù)的實現(xiàn)前臺服務(wù)的實現(xiàn)實現(xiàn)步驟:自定義一個Service服務(wù)類在Service類中重寫onCreate()方法在onCreate()方法中根據(jù)自己的需求編寫Notification調(diào)用startForeground方法05Activity與Service交互小結(jié)及討論Activity與Service交互小結(jié)及作業(yè)1、了解交互的流程;2、前臺服務(wù)的實現(xiàn)。
小結(jié)討論如何使用前臺服務(wù)實現(xiàn)一個通知欄?THANKYOU廣播機制基礎(chǔ)廣播類型03廣播機制實現(xiàn)流程02小結(jié)與思考04目錄廣播機制概念0101
廣播機制概念廣播機制概念Broadcast是android中的四大組件之一,是在組件之間傳播數(shù)據(jù)(Intent)的一種機制,當系統(tǒng)之間需要傳遞信息時,不是通過按鈕事件觸發(fā),而是由系統(tǒng)通過系統(tǒng)調(diào)用引發(fā)事件。廣播的發(fā)送者和接收者事先是不需要知道對方的存在的。這樣帶來的好處便是,系統(tǒng)的各個組件可以松耦合地組織在一起,這樣系統(tǒng)就具有高度的可擴展性,容易與其它系統(tǒng)進行集成。Android的廣播機制是在Binder進程間通信機制的基礎(chǔ)上實現(xiàn)的,內(nèi)部基于消息發(fā)布和訂閱的事件驅(qū)動模型,廣播發(fā)送者負責(zé)發(fā)送消息,廣播接收者需要先訂閱消息,然后才能收到消息。02廣播機制實現(xiàn)流程廣播機制實現(xiàn)流程①廣播接收者是通過Binder機制在AMS(ActivityManagerService)中進行注冊②廣播發(fā)送者是通過Binder機制向AMS發(fā)送廣播。③
AMS查找符合相應(yīng)條件(IntentFilter/Permission)的廣播接收者(BroadcastReceiver),將廣播發(fā)送到相應(yīng)的消息循環(huán)隊列中。④執(zhí)行消息循環(huán)時獲取到此廣播,會回調(diào)廣播接收者(BroadcastReceiver)中的onReceive()方法并在該方法中進行相關(guān)處理。03廣播類型廣播類型①普通廣播Normalbroadcast:異步執(zhí)行的廣播,所有的廣播接收器都會在同一時間接收到,沒有先后順序。②有序廣播OrderedBroadcast:同步執(zhí)行的廣播,同一時刻只有一個廣播接收器接收到,有先后順序,即優(yōu)先級。04廣播機制
小結(jié)及討論廣播機制小結(jié)及作業(yè)1、了解廣播機制流程;2、兩種廣播類型。
小結(jié)討論為什么要有廣播的應(yīng)用?THANKYOU廣播接收器與自定義自定義廣播介紹03BroadcastReceiver的開發(fā)使用流程02目錄廣播接收器介紹01自定義廣播的實現(xiàn)流程0401
廣播接收器介紹廣播接收器介紹BroadcastReceiver就是廣播接收器,屬于Android四大組件之一。其本質(zhì)上是一個監(jiān)聽器,監(jiān)聽收到的廣播來進行處理相應(yīng)操作。廣播接收器的基本特性:①廣播接收器的生命周期短,在接收到廣播的時候創(chuàng)建,在onReceive()方法結(jié)束之后銷毀。②廣播接收器中不建議做耗時的任務(wù)。③廣播接收器中也不要創(chuàng)建子線程做耗時的工作,因為廣播接收者被銷毀后進程就成為了空進程,很容易被系統(tǒng)殺掉。02BroadcastReceiver的開發(fā)使用流程BroadcastReceiver的開發(fā)使用流程①創(chuàng)建BroadcastReceiver的子類,重寫onReceive()方法:廣播接收器接收到相應(yīng)廣播后,會自動回調(diào)onReceive()方法②注冊BroadcastReceiver對象:靜態(tài)注冊,在AndroidManifest.xml里通過<receive>標簽聲明。BroadcastReceiver的開發(fā)使用流程動態(tài)注冊,調(diào)用Context.registerReceiver()注冊。③發(fā)送廣播將廣播消息封裝到Intent中,然后調(diào)用sendBroadcast()方法發(fā)送。通過IntentFilter對象過濾Intent,處理與其匹配的廣播。03自定義廣播介紹自定義廣播介紹當系統(tǒng)提供的廣播不能滿足實際需求時,則可以自定義廣播,同時需要編寫對應(yīng)的廣播接收者。廣播接收器的基本特性:①廣播接收器的生命周期短,在接收到廣播的時候創(chuàng)建,在onReceive()方法結(jié)束之后銷毀。②廣播接收器中不建議做耗時的任務(wù)。③廣播接收器中也不要創(chuàng)建子線程做耗時的工作,因為廣播接收者被銷毀后進程就成為了空進程,很容易被系統(tǒng)殺掉。04自定義廣播的實現(xiàn)流程自定義廣播的實現(xiàn)流程(1)創(chuàng)建廣播接收器(2)創(chuàng)建一個布局添加按鈕控制廣播發(fā)送自定義廣播的實現(xiàn)流程(3)創(chuàng)建活動Activity發(fā)送廣播05小結(jié)與思考
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中鐵入職合同范本
- alc板供貨合同范本
- 買車位協(xié)議合同范本
- 興發(fā)門窗合同范本模板
- 農(nóng)業(yè)種植西紅柿合同范本
- 代加工家禽合同范本
- 低壓電工合同范本
- 公司簽訂勞務(wù)合同范本
- 農(nóng)村魚池修建項目合同范本
- 全款房產(chǎn)抵押合同范本
- 咖啡店合同咖啡店合作經(jīng)營協(xié)議
- 2025年山東鋁業(yè)職業(yè)學(xué)院高職單招職業(yè)技能測試近5年??及鎱⒖碱}庫含答案解析
- 全套電子課件:技能成就夢想
- 2024年教育公共基礎(chǔ)知識筆記
- 2025年江蘇農(nóng)林職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測試近5年??及鎱⒖碱}庫含答案解析
- 異構(gòu)數(shù)據(jù)融合技術(shù)-深度研究
- 北京市朝陽區(qū)2024-2025學(xué)年七年級上學(xué)期期末考試數(shù)學(xué)試卷(含答案)
- 《銷售合同執(zhí)行》課件
- 2025年春新外研版(三起)英語三年級下冊課件 Unit4第2課時Speedup
- 山東2024年山東經(jīng)貿(mào)職業(yè)學(xué)院第二批招聘102人歷年參考題庫(頻考版)含答案解析
- 2024年湖南汽車工程職業(yè)學(xué)院單招職業(yè)技能測試題庫標準卷
評論
0/150
提交評論