久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

深圳安卓應(yīng)用程序技術(shù)培訓(xùn)學(xué)校資料

時間:2019-05-12 18:53:22下載本文作者:會員上傳
簡介:寫寫幫文庫小編為你整理了多篇相關(guān)的《深圳安卓應(yīng)用程序技術(shù)培訓(xùn)學(xué)校資料》,但愿對你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫還可以找到更多《深圳安卓應(yīng)用程序技術(shù)培訓(xùn)學(xué)校資料》。

第一篇:深圳安卓應(yīng)用程序技術(shù)培訓(xùn)學(xué)校資料

安卓開發(fā)工程師,2013年金領(lǐng)行業(yè),深圳安卓應(yīng)用軟件開發(fā)培訓(xùn)(安卓APP應(yīng)用軟件開發(fā))深圳系統(tǒng)集成開發(fā),深圳安卓嵌入式開發(fā)培訓(xùn)。這些行業(yè)目前是深圳地區(qū)緊缺稀缺人才,崗位多,待遇高,放下你的執(zhí)拗,用好你的業(yè)余時間,學(xué)一門真正改變命運的技術(shù)。你還在抽搐等待什么,來深圳中鵬培訓(xùn)安卓應(yīng)用軟件開發(fā)學(xué)校了解清楚,成就自己真正的事業(yè)!

【開班時間】

安卓應(yīng)用程序周末班:6月23日

【中鵬優(yōu)勢】:

1、最專業(yè)的師資團隊:我們的培訓(xùn)講師均具備至少五年以上的移動終端軟件研發(fā)經(jīng)驗,擁有負責(zé)過國內(nèi)多個一線品牌的項目經(jīng)驗,是最貼近行業(yè)前沿的講師團隊;

2、最前沿的培訓(xùn)課程:我們的培訓(xùn)課程完全根據(jù)主流企業(yè)用人需求研發(fā),做有針對性地培訓(xùn),用最高的效率來保證學(xué)員學(xué)習(xí)的內(nèi)容豐富實用;

3、最實用的實操演練:我們的實戰(zhàn)演練完全模擬企業(yè)真實的項目和案例來開展,培訓(xùn)過程中涉及到的開發(fā)調(diào)試設(shè)備也是和企業(yè)完全一致;

4、最精準(zhǔn)的課程講義:我們的課程講義,完全根據(jù)培訓(xùn)學(xué)員的實際情況并結(jié)合市場需求來定制調(diào)整,并推薦適用的參考書籍資料,以幫助學(xué)員舉一反三,最短時間學(xué)會最扎實的專業(yè)技能。

【課程內(nèi)容】

Android應(yīng)用開發(fā):

Android上JAVA開發(fā)的基礎(chǔ)知識及SQLite ;Android基礎(chǔ)介紹、控件學(xué)習(xí)和應(yīng)用、程序界面開發(fā)、程序調(diào)試、事件處理機制、消息廣播與服務(wù)響應(yīng)、Android多線程基礎(chǔ)、單機android應(yīng)用開發(fā)實戰(zhàn);android網(wǎng)絡(luò)開發(fā)基礎(chǔ)、手機系統(tǒng)功能開發(fā)

Android系統(tǒng)集成:

Android平臺基礎(chǔ)、Android驅(qū)動核心基礎(chǔ)、塊設(shè)備驅(qū)動開發(fā)、Android驅(qū)動模型、Android電源管理、Android驅(qū)動層次、調(diào)試技術(shù)、設(shè)備驅(qū)動程序、實踐調(diào)試

第二篇:深圳安卓開發(fā)培訓(xùn)有沒有用?

深圳安卓開發(fā)培訓(xùn)有沒有用

龐大的市場意味著更大的挑戰(zhàn)、更多的人才需求與就業(yè)機會,在現(xiàn)行教育模式下,高校計算機網(wǎng)絡(luò)專業(yè)畢業(yè)生技術(shù)實力與企業(yè)雇主期望存在較大落差。面對競爭壓力,只有通過不斷提升自己的綜合能力才可以在激烈的競爭中立于不敗之地。深圳安卓開發(fā)培訓(xùn)的盛行之勢顯露無疑。

參加深圳安卓開發(fā)培訓(xùn)這個想法在上大學(xué)的時候就有了,一直沒有機會去做,在人生感到絕望的時候,這是曾我的最后一條路,如果可以走下去,我便有了人生的道路。至于為什么是安卓開發(fā)培訓(xùn),來之前培訓(xùn)的目的很簡單,就是找到一份工作,一份糊口的工作而已,可是畢業(yè)之后,感覺當(dāng)時的目的有些幼稚,在安卓開發(fā)培訓(xùn)學(xué)習(xí),對我來說卻是可以為自己的人生定位的一次契機。當(dāng)你有在某領(lǐng)域有自己的長處時,你才能在這個領(lǐng)域走下去。

路是自己選的,所以自從我下定決心進行千鋒安卓培訓(xùn)的第一天開始,我就對自己制定了目標(biāo),哪怕再苦再累自己也要扛著。上課的第一天我就被那里的老師們的專業(yè)技能和敬業(yè)程度深深震撼,老師會對每個知識點不厭其煩的重復(fù)。直到我們每個人都理解了為止,也正是從這個時候起我感到學(xué)校學(xué)到東西的膚淺。由于自己本來有一定的JAVA基礎(chǔ),所以雖然上課比大家遲了一周,但是在同學(xué)和老師的幫助下,我很快趕上了進度。驚奇的收獲是,在這里的4個月敲的代碼量竟然是我大學(xué)4年敲的代碼的10倍。為了鞏固每天的知識點,每天都有相應(yīng)的課下練習(xí),每天高強度的練習(xí)讓自己在以后的工作中也

可以扛得住壓力!在千鋒學(xué)習(xí)了四個月的安卓開發(fā)培訓(xùn),讓我從一個編程的菜鳥,變成一名安卓開發(fā)人員,并順利就業(yè),也證實了千鋒的雄厚實力。在這里我經(jīng)歷了JAVA語言、UI、網(wǎng)絡(luò)、項目實踐,最后是獨立開發(fā)項目,每個階段都必須通過考核,才能進入下一個階段,而且每個階段都有一位認(rèn)證負責(zé)任的講師陪我們度過。

高薪是我在深圳安卓開發(fā)培訓(xùn)第一天就下定決心的終極目標(biāo),接受自己的過去,打造一份優(yōu)秀的簡歷是我必須完成的職業(yè)生涯課題第一課,多和就業(yè)老師溝通,不斷優(yōu)化自己的簡歷,同時,面試會存在著諸多的不順,每一次的失敗,都要去多多總結(jié),反省,我開始相信并逐漸堅信,當(dāng)我們能找到自己的不足并去彌補,上帝總會留下一扇窗是給你。

文章取材來自千鋒深圳安卓培訓(xùn)學(xué)員的真實經(jīng)歷。

第三篇:安卓學(xué)習(xí)心得

Android學(xué)習(xí)心得

-----093380117

計算機應(yīng)用(1)

張峰

1.關(guān)于Activity

1.在一個Activity中使用多個View

如果把Activity看作MVC中的Control?它負責(zé)管理UI和接受事件(包括用戶的輸入),雖然說一個Activity通常對應(yīng)一個屏幕,但事實上,我們是可以只用一個Activity管理多個不同的View來實現(xiàn)簡單的邏輯。首先,我們增加一個新的資源描述layout/second.xml。

除了一個“Hello中國”以外,增加一個按鈕可以返回前一個界面。然后,在代碼中我們要為helloTwo增加兩個方法,setViewOneCommand和setViewTwoCommand,分別處理一下在不同界面時,從資源里加載組件并為組件綁定一個事件處理器最后,我們需要在onCreate的時候,也就是啟動后的main界面上設(shè)置一下按鈕事件處理器。2.還是回到正道上,多個Activity之間的跳轉(zhuǎn)

Android中提供一個叫Intent的類來實現(xiàn)屏幕之間的跳轉(zhuǎn),按文檔的說法,似乎他們也建議采用這種方法,Intent的用法比較復(fù)雜,現(xiàn)在我先看看它最簡單的用法。

這里的跳轉(zhuǎn)功能用Intent來操作,它的最簡單用法就是用函數(shù)setClass()設(shè)置跳轉(zhuǎn)前后兩個Activity類的實例,然后調(diào)用Activity自己的startActivity(intent)即可。最后一句finish()表示將當(dāng)前Activity關(guān)掉(如果不關(guān)掉會如何?你可以自己試一下看效果,事實上有時我們是不需要關(guān)掉當(dāng)前Activity的)。

然后,我們同樣弄一個Activity類HelloThreeB,代碼與前面的差不多,只是將setClass的兩個參數(shù)反一下,這樣就可以簡單地實現(xiàn)在兩個Activity界面中來回切換的功能了。

2.關(guān)于 Intent的使用

Intent分為兩大類,顯性的(Explicit)和隱性的(Implicit)。一般來說,intent要定位事件的目的地,無外乎需要以下幾個信息: 1.種類(category),比如我們常見的 LAUNCHER_CATEGORY 就是表示這是一類應(yīng)用程序。

2.類型(type),在前面的例子中沒用過,表示數(shù)據(jù)的類型,這是隱性Intent定位目標(biāo)的重要依據(jù)。

3.組件(component),前面的例子中用的是setClass,不過也可以用setComponent來設(shè)置intent跳轉(zhuǎn)的前后兩個類實例。4.附加數(shù)據(jù)(extras),在ContentURI之外還可以附加一些信息,它是Bundle類型的對象。

其實,如果是在一個應(yīng)用內(nèi)部,這種隱性的intent實在有點別扭,個人覺得,這種松藕合的實現(xiàn)方法,只適用于那些較大的系統(tǒng)或者多個不同的應(yīng)用之間的調(diào)用,可手機上又有什么“較大”的系統(tǒng)呢?無非是可以與不同來源的多個應(yīng)用之間方便地互操作而已,那么會是什么樣的場景呢?比如,給QQ好友發(fā)送gmail郵件,用GoogleMap查找QQ好友所在的位置?看上去挺不錯的。

關(guān)于這個ContentProvider,其實還有話說,它主要是的那些看似數(shù)據(jù)庫操作的方法我們都沒真正去實現(xiàn)呢。不過今天就到這里了,等下回再去研究吧。

3.關(guān)于ListActivity

準(zhǔn)備一個List對象并借助Adapter就可以構(gòu)造出一個列表。重載onListItemClick方法可以響應(yīng)選擇事件,利用第一個參數(shù)可以訪問到這個ListView實例以得到選中的條目信息。這里有一點要說明的,就是如果更簡單的話,其實連那個setContentView都可以不要了,Android也會自動幫我們構(gòu)造出一個全屏的列表。但是本例中我們需要一個TextView來顯示選中的條目,所以我們需要一個layout.mainb描述一下這個列表窗口。

這里需要注意的是那個ListView的ID,是系統(tǒng)自定義的android:list,不是我們隨便取的,否則系統(tǒng)會說找不到它想要的listview了。然后,在這個listview之外,我們又增加了一個TextView,用來顯示選中的條目。

再來說說這里用到的ArrayAdapter,它的構(gòu)造函數(shù)中第二個參數(shù)是一個資源ID,ArrayAdapter的API文檔中說是要求用一個包含TextView的layout文件,平臺用它來顯示每個選擇條目的樣式,這里的取值是R.layout.list_row,所以,我們還有一個list_row.xml文件來描述這個布局,相當(dāng)簡單。

從ArrayAdapter上溯到BaseAdapter,發(fā)現(xiàn)還有幾個同源的Adapter也應(yīng)該可以使用,象SimpleAdapter和CursorAdapter,還是做個例子來實驗一下吧。

然后,在HelloTwoB中的onCreate函數(shù)中,修改代碼,有幾個不同:items的元素是HashMap實例,這是一點變化,然后構(gòu)造函數(shù)除了要求items以外,還要求提供一個string[]來說明用hash表中的哪個字段顯示在列表中,而后是一個資源ID的數(shù)組。

因為單純的CursorAdapter是抽象類,所以我用的是它的子類SimpleCursorAdapter,很好理解,先用ContentResolver查詢通訊簿得到一個游標(biāo),然后告訴SimpleCursorAdapter要用其中的People.NAME作為顯示項來構(gòu)造出一個adapter即可。4.關(guān)于Dialog

注意到android.app包下除了Dialog(可用于制作復(fù)雜的對話框)以外,還包括了幾個系統(tǒng)定義好的對話框類,如DatePickerDialog、TimePickerDialog及AlertDialog。

其中AlertDialog我上回用過一次,基本上就那樣子了,今天看看另外兩個對話框的使用吧。

很簡單的,無非是需要一個OnDateSetListener接口的實現(xiàn)而已,在它里面的dateSet方法中就可以得到選擇的日期了。而TimePickerDialog與DatePickerDialog使用如出一轍。

看看另一個ProgressDialog的用法吧,這個類與AlertDialog一樣包含了多個static的方法,所以使用起來是非常方便的。比如說,如果我們需要用它來表示一個長時間的操作。

5.關(guān)于Service和Notification

大略地看了一下android.app下的Service類,覺得它與Activity非常相似,只是要注意幾個地方:

1.生命周期,Service的從onCreate()->onStart(int,Bundle)->onDestroy()顯得更為簡單。但是它的onStart是帶參數(shù)的,第一個ID可用來標(biāo)識這個service,第二個參數(shù)顯示是用來傳遞數(shù)據(jù)的了。比較Activity,傳遞數(shù)據(jù)的Bundle是在onCreate就帶進入的。

2.Service的啟動由Context.startService開始,其實Activity或者Service都是Context的派生類。結(jié)束于Context.stopService()或者它自己的stopSelf()。

3.Service還有一個與Activity不一樣的是它可以由另一個Context去綁定一個已存在的Service。就是這個方法Context.bindService(),被綁定的Service要求是已經(jīng)onCreate了但可以沒有onStart。在Service類中有個抽象方法getBinder()可以得到這個IBinder對象。關(guān)于這方面的細節(jié),以后再看,這里只做個記錄罷。

4.與Service有關(guān)的還有一個安全的問題,可以在AndroidManifest.xml中用標(biāo)簽來聲明一個Service的訪問權(quán)限,關(guān)于Android的安全問題也留待以后再解決吧。

6.GridView與ImageView

簡單一點吧,就瞧瞧那個Grid的效果,Android提供了一個GridView,不過從APIDemo中看來,它似乎與PC上的GRID差別還是挺大的,更像那個IconView的感覺。不知道Android中如何實現(xiàn)表格界面?雖然在移動終端上,表格一般不會有誰使用,大家似乎更傾向于使用ListView,而Android對于ListView則有更簡單的實現(xiàn)ListActivity。

很簡單,只要重載幾個方法就可以了,關(guān)鍵是那個getView方法,它負責(zé)構(gòu)建出每個單元格中的對象實例。這里我們構(gòu)造的是一個ImageView實例。

然后就是同樣的將這個Adapter賦給GridView即可,大家可以看看效果,注意在做這個例子前,先放幾個小圖片到res/drawable目錄下,buildproject一下就可以得到那個R.drawable.a了(這里的a是圖像文件名,如a.png)。

在getView方法中我們使用了ImageView類,這又是一個widget。除了上面用到的幾個方法以外,還有以下幾個方法值得注意: 與圖像來源有關(guān)的方法,我們只用了資源文件的方式。

還是習(xí)慣性跑題了,其實,我是想通過我對這個類的無數(shù)次Debugger跟進,說說它的多線程異步處理的解決策略的。他的基本策略如下: 1.當(dāng)你實例化一個AsyncQueryHandler類時(包括其子類...),它會單件構(gòu)造一個線程(后面會詳述...),這個線程里面會構(gòu)建一個消息循環(huán)。

2.獲得該消息循環(huán)的指針,用它做參數(shù)實例化另一個Handler類,該類為內(nèi)部類。至此,就有了兩個線程,各自有一個Handler來處理消息。3.當(dāng)調(diào)用onXXX的時候,在XXX函數(shù)內(nèi)部會將請求封裝成一個內(nèi)部的參數(shù)類,將其作為消息的參數(shù),將此消息發(fā)送至另一個線程。4.在該線程的Handler中,接受該消息,并分析傳入的參數(shù),用初始化時傳入的ContentResolver進行XXX操作,并返回Cursor或其他返回值。

5.構(gòu)造一個消息,將上述返回值以及其他相關(guān)內(nèi)容綁定在該消息上,發(fā)送回主線程。

6.主線程默認(rèn)的AsyncQueryHandler類的handleMessage方法(可自定義,但由于都是內(nèi)部類,基本沒有意義...)會分析該消息,并轉(zhuǎn)發(fā)給對應(yīng)的onXXXComplete方法。

7.用戶重寫的onXXXComplete方法開始工作。

這就是它偷偷摸摸做過的事情,基本還是很好理解的。我唯一好奇的是它的線程管理方式,我猜測他是用的單件模式。第一個AsyncQueryHandler的實例化會導(dǎo)致創(chuàng)建一個線程,從此該線程成為不死老處男,所有的ContentResolver相關(guān)的工作,都由該線程統(tǒng)一完成。個人覺得這種解決方式很贊。本來這個線程的生命周期就很難估量,并且,當(dāng)你有一個ContentProvider的請求的時候,判斷你會做更多的類似操作并不過分。就算錯了,花費的也只是一個不死的線程(與進程同生死共存亡...),換來的卻是簡單的生命周期管理和無數(shù)次線程生死開銷的節(jié)約。同時另外一個很重要的問題,他并會涉及到單件中數(shù)據(jù)同步的問題,每個類都有各自的Handler類,彼此互不干擾,分發(fā)可以分別進行。當(dāng)多個數(shù)據(jù)請求的時候,在同一個ContentResolver上進行的可能微乎其微,這就避免了堵塞。總而言之,這套解決辦法和Android的整體設(shè)計算是天作之合了。

所以建議,如果你有什么非ContentProvider操作,卻需要異步多線程執(zhí)行的話,模擬一套,是個不錯的策略,當(dāng)然,具體情況具體分析,生搬硬套是學(xué)不好馬列主義的。

7.顯示控件使用

Android的界面顯示同樣也是基于控件的。通常是用View(包括ViewGroup)控件配上XML的樣式來做的。具體細節(jié)不想說了,可以參考 Samples里的ApiDemos/View,和View的Doc,以及Implementing a UI這篇Doc。其他還有很多,感覺算是SDK講述的最多的內(nèi)容。

從控件的使用上,和網(wǎng)頁的設(shè)計類似,盡量用parent_width之類的抽象長度,用Theme來做風(fēng)格,抽取所有的字串等信息做本地化設(shè)計。相關(guān)內(nèi)容參看Implementing a UI就好。

一類比較重要的是數(shù)據(jù)綁定控件。如果做過ASP.Net會從中看到很多類似的地方。一個支持?jǐn)?shù)據(jù)綁定的控件,比如ListView。可以通過一個 ListAdapter綁定到一個數(shù)據(jù)源上。ListAdapter是一個抽象類,主要的實現(xiàn)類包括SimpleAdapter和 SimpleCursorAdapter。前者是綁定一個靜態(tài)的Array,后者是綁定一個動態(tài)的Cursor。Cursor前面說過,是一個指向數(shù)據(jù)源的隨機迭代器,將View綁定到Cursor通常要設(shè)置這樣幾個參數(shù)。一個是每一行的樣式,稱作Row Layout,其實就是一個普通的Layout的XML文件。還有就是一個列和現(xiàn)實控件的對應(yīng)關(guān)系。那個控件顯示哪個列的值,這是需要配置的。為了定制一個良好的數(shù)據(jù)顯示控件,最簡單你可以定制很PP的Row Layout,復(fù)雜一點就是可以重載綁定控件View,或者是適配器ListAdapter。如果是一個數(shù)據(jù)顯示密集的應(yīng)用,且你對UI有些追求,這個工作估計是必不可少的。

一個主要用于顯示數(shù)據(jù)內(nèi)容的Activity,可以選擇派生自ListActivity。它提供了一個具有ListView 的Layout,還有simple_list_item_1, simple_list_item_2, two_line_list_item等默認(rèn)的Row Layout,還有一些比較不錯的API,和可供響應(yīng)選擇Item的事件。可以滿足你比較基礎(chǔ)的需求。如果你覺得只有一個ListView的界面太突兀,你可以為這個ListActivity指定一個Layout,需要注意的是,你需要提供一個id為@android:id/list的ListView控件,避免Activity在內(nèi)部偷偷尋找該控件的時候失敗。

除了這些要求,做好UI還有注意易用性和效率。快捷鍵是一個比較不錯的選擇,在 Activity中調(diào)用setDefaultkeyMode(SHORTCUT_DEFAULT_KEYS),可以開啟快捷鍵模式,然后你可以將菜單綁定到指定快捷鍵上就OK了。個人覺得Tip也是一個比較重要的東西,但目前觀察看來,這個東西只能夠自己提供了。界面的動態(tài)性有時候是不可避免的,比如說菜單就是一個需要經(jīng)常根據(jù)光標(biāo)位置提供不同的選項。這個東西Android很人道的考慮到了,你可以參看NodeList這個Sample。它采取的應(yīng)該是一個靜態(tài)模擬動態(tài)的方式,這樣有助于提高速度。你也可以利用ViewInflate,動態(tài)從一個XML創(chuàng)建一個控件。成本據(jù)Doc說很大,不到萬不得已不要使用。

8.Intent消息傳遞

在前面寫Android的ContentProvider時候,可以看到那是基于觀察者模式的一個消息傳遞方法。每一個Cursor、ContentResolver做為一個小的注冊中心,相關(guān)觀察者可以在這個中心注冊,更新消息由注冊中心分發(fā)給各個觀察者。而在MFC或Winform中,都會形成一個消息網(wǎng),讓消息在網(wǎng)中流動,被各節(jié)點使用、吃掉或者在出口死掉。

相比之下,我個人覺得基于Intent的Android核心消息傳遞機制是有所不同的。它應(yīng)該會有一個全局性的注冊中心,這個注冊中心是隱性的,整個Android系統(tǒng)中就那么一個。所有的消息接收者,都被隱形的注冊到這個中心。包括Activity,Service和IntentReceiver。其實說隱形注冊是不確切的,所有注冊都還是我們手動告訴注冊中心的,只是與傳統(tǒng)的方式不一樣,我們通常不是通過代碼,而是通過配置文件來做。在應(yīng)用的Manifest中,我們會為一些Activity或Service添加上Intent-filter,或在配置文件中添加項。這其實就相當(dāng)于向系統(tǒng)的注冊中心,注冊了相關(guān)的Intent-filter和receiver(這個事情完全可以通過代碼來做,只是這樣就失去了修改的靈活性)。

當(dāng)程序有一個消息希望發(fā)出去的時候,它需要將消息封裝成一個Intent,并發(fā)送。這時候,應(yīng)該是有一個統(tǒng)一的中心(恩,有可能Android底層實現(xiàn)的時候不是,但簡單這樣看是沒問題的...)接受到這個消息,并對它進行解析、判定消息類型(這個步驟降低了耦合...),然后檢查注冊了相匹配的filter或receiver,并創(chuàng)建或喚醒接收者,將消息分發(fā)給它。這樣做有很多好處。雖然這種傳遞有的時候不如點對點的傳遞快(這有些需要速度的地方,我們看到Android會通過直接通信來做),但有時候又因為它只經(jīng)過一跳(姑且這么叫吧...),比復(fù)雜的流動又要更快。更重要的是,它耦合性低,在手機平臺這種程序組件多變的條件下使用十分適合。并且它可以很容易實現(xiàn)消息的精確或模糊匹配,彈性很大。(我個人曾想在開發(fā)一個C++二次平臺的時候引入這樣的機制,但在C++中,建立一套完整的數(shù)據(jù)marshal機制不容易,相比之下,用java來做會簡單很多...)

恩,廢話說了很多,具體講講Android中Intent的使用。當(dāng)你有一個消息需要傳遞,如果你明確知道你需要哪個Activity或者其他Class來響應(yīng)的話,你可以指定這個類來接受該消息,這被稱為顯性發(fā)送。你需要將Intent的class屬性設(shè)置成目標(biāo)。這種情況很常見,比如startActivity的時候,會清楚當(dāng)前Activity完了應(yīng)該是哪個Activity,那就明確的發(fā)送這個消息。

但是,有的時候你并不確定你的消息是需要具體哪個類來執(zhí)行,而只是知道接收者該符合哪些條件。比如你只需要有一個接收者能顯示用戶所選的數(shù)據(jù),而不想制定某個具體的方法,這時候你就需要用到隱形發(fā)送(傳統(tǒng)上,我們可能會考慮用多態(tài),但顯然這種方式更為靈活...)。在Android中,你可以為Intent指定一個action,表示你這個指令需要處理的事情。系統(tǒng)為我們定義了很多Action類型,這些類型使系統(tǒng)與我們通信的語言(比如在Activity里面加一個Main的filter,該activity就會做成該應(yīng)用的入口點),當(dāng)然你也可以用于你自己的應(yīng)用之間的通信(同樣當(dāng)然,也可以自定義...)。強烈建議,在自己程序接收或發(fā)出一個系統(tǒng)action的時候,要名副其實。比如你響應(yīng)一個view動作,做的確實edit的勾當(dāng),你發(fā)送一個pick消息,其實你想讓別人做edit的事,這樣都會造成混亂。當(dāng)然只有Action有時候是不夠的,在Android中我們還可以指定catalog信息和type/data信息,比如所有的顯示數(shù)據(jù)的Activity,可能都會響應(yīng)View action。但很多與我們需要顯示的數(shù)據(jù)類型不一樣,可以加一個type信息,明確的指出我們需要顯示的數(shù)據(jù)類型,甚至還可以加上一個catalog信息,指明只有你只有按的是“中鍵”并發(fā)出這樣的消息才響應(yīng)。從上面可以看出,Android的Intent可以添加上class, action, data/type, catalog等消息,注冊中心會根據(jù)這些信息幫你找到符合的接收者。其中class是點對點的指示,一旦指明,其他信息都被忽略。Intent中還可以添加key/value的數(shù)據(jù),發(fā)送方和接收方需要保持統(tǒng)一的key信息和value類型信息,這種數(shù)據(jù)的marshal在java里做,是不費什么力氣的。

Android的Intent發(fā)送,可以分成單播和廣播兩種。廣播的接收者是所有注冊了的符合條件的IntentReceiver。在單播的情況下,即使有很多符合條件的接收者,也只要有一個出來處理這個消息就好(恩,個人看法,沒找到確切條款或抉擇的算法,本來想實驗一下,沒來得及...),這樣的情況很容易理解,當(dāng)你需要修改某個數(shù)據(jù)的時候,你肯定不會希望有十個編輯器輪流讓你來處理。當(dāng)廣播不是這樣,一個receiver沒有辦法阻止其他receiver進行對廣播事件的處理。這種情況也很容易理解,比如時鐘改變了,鬧鐘、備忘錄等很多程序都需要分別進行處理。在自己的程序的使用中,應(yīng)該分清楚區(qū)別,合理的使用。

9.ContentProvider數(shù)據(jù)模型

數(shù)據(jù)庫操作

從我目前掌握的知識來看,SQLite比較輕量(沒有存儲過程之類的繁雜手段),用起來也比較簡單。實例化一個SQLiteDatabase類對象,通過它的APIs可以搞定大部分的操作。從sample中看,Android中對db的使用有一種比較簡單的模式,即派生一個 ContentProviderDatabaseHelper類來進行SQLiteDatabase對象實例的獲取工作。基本上,ContentProviderDatabaseHelper類扮演了一個singleton的角色,提供單一的實例化入口點,并屏蔽了數(shù)據(jù)庫創(chuàng)建、打開升級等細節(jié)。在ContentProvider中只需要調(diào)用ContentProviderDatabaseHelper的openDatabase方法獲取SQLiteDatabase的實例就好,而不需要進行數(shù)據(jù)庫狀態(tài)的判斷。URI 像進行數(shù)據(jù)庫操作需要用SQL一樣,對ContentProivder進行增刪改查等操作都是通過一種特定模式的URI來進行的(ig:content: //provider/item/id),URI的能力與URL類似,具體細節(jié)可以查看SDK。建立自己的ContentProvider,只需要派生 ContentProivder類并實現(xiàn)insert, delete, update等抽象函數(shù)即可。在這些接口中比較特殊的是getType(uri)。根據(jù)傳入的uri,該方法按照MIME格式返回一個字符串(==!沒聽過的詭異格式...)唯一標(biāo)識該uri的類型。所謂uri的類型,就是描述這個uri所進行的操作的種類,比如content://xx/a與 content://xx/a/1不是一個類型(前者是多值操作,后者是單值),但content://xx/a/1和content://xx/a/2 就會是一個類型(只是id號不同而已)。

在ContentProvider通常都會實例化一個ContentURIPraser來輔助解析和操作傳入的URI。你需要事先(在static域內(nèi))為該ContentURIPraser建立一個uri的語法樹,之后就可以簡單調(diào)用 ContentURIPraser類的相關(guān)方法進行uri類型判斷(match方法),獲取加載在uri中的參數(shù)等操作。但我看來,這只是在使用上簡化了相關(guān)操作(不然就需要自己做人肉解析了...),但并沒有改變類型判定的模式。你依然需要用switch...case...對uri的類型進行判斷,并進行相關(guān)后續(xù)的操作。從模式來看,這樣無疑是具有強烈的壞味道,類似的switch...case...代碼要出現(xiàn)N此,每次一個 ContentProvider做uri類型的增減都會需要遍歷修改每一個switch...case...,當(dāng)然,如果你使用模式(策略模式...)進行改造對手機程序來說無疑是崩潰似的(類型膨脹,效率降低...),所以,只能是忍一忍了(恩,還好不會擴散到別的類中,維護性上不會有殺人性的麻煩...)。增刪改查

ContentProvider 和所有數(shù)據(jù)源一樣,向外提供增刪改查操作接口,這些都是基于uri的指令。進行insert操作的時候,你需要傳入一個uri和 ContentValues。uri的作用基本就限于指明增減條目的類型(從數(shù)據(jù)庫層面來看就是table名),ContentValues是一個 key/value表的封裝,提供方便的API進行插入數(shù)據(jù)類型和數(shù)據(jù)值的設(shè)置和獲取。在數(shù)據(jù)庫層面上來看,這應(yīng)該是column name與value的對應(yīng)。但為了屏蔽ContentProvider用戶涉及到具體數(shù)據(jù)庫的細節(jié),在Android的示例中,用了一個小小的模式。它為每一個表建一個基于BaseColumn類的派生類(其實完全可以不派生自BaseColumn,特別當(dāng)你的表不基于默認(rèn)的自動id做主鍵的時候),這個類通常包括一個描述該表的ContentURI對象和形如 public static final TITLE = “title”這樣的column到類數(shù)據(jù)的對應(yīng)。從改變上角度來看,你可以修改column的名字而不需要更改用戶上層代碼,增加了靈活性。insert方法如果成功會返回一個uri,該uri會在原有的uri基礎(chǔ)上增加有一個row id。對于為什么使用row id而不是key id我想破了腦袋。到最后,我發(fā)現(xiàn)我傻了,因為ContentProvider不一定需要使用數(shù)據(jù)庫,使用數(shù)據(jù)庫對應(yīng)的表也可以沒有主鍵,只有row id,才能在任何底層介質(zhì)下做索引標(biāo)識。

但,基于row id在刪除和修改操作是會造成一定的混亂。刪除和修改操作類似。刪除操作需要傳入一個uri,一個where字串,一組where的參數(shù)(做條件判定...),而修改操作會多一個ContentValues做更新值。著兩個操作的uri都支持在末尾添加一個row id。于是混亂就出現(xiàn)了。當(dāng)在where參數(shù)中指明了key id,而在uri中提供了row id,并且row id和key id所指函數(shù)不一致的時候,你聽誰的?示例代碼中的做法是完全無視row id(無語...),如此野蠻的方式我估計也只能在示例中出現(xiàn),在實際中該如何用,恩,我也不知道。幸運的是,我看了下上層對 ContentProvider的刪除操作,其實都不會直接進行,而是通過調(diào)用Cursor的delete方法進行,在這前提下,我想Cursor會處理好這些東西吧。

最后一個操作是查詢操作,可以想見,查詢的參數(shù)是最多的,包括uri和一組條件參數(shù)。條件參數(shù)類型和標(biāo)準(zhǔn)的sql類似,包括 sort, projection 之類的。從這些參數(shù)到sql語句的生成,可以尋求QueryBuilder類的幫助,它提供了一組操作接口,簡化了參數(shù)到sql的生成工作,哪怕你不懂 sql都完全沒有問題(這話說的我自己都覺得有點懸...)。查詢返回一個Cursor。Cursor是一個支持隨機讀寫的指針,不僅如此,它還提供了方便的刪除和修改的API,是上層對ContentProvider進行操作一個重要對象,需要仔細掌握(Cursor還可以綁定到view上,直接送顯,并與用戶進行交互,真是程序越往上,封裝越好,工作越機械沒有復(fù)雜性了...)。數(shù)據(jù)模型

在與界面打交道的Cursor、ContentResolver等數(shù)據(jù)操作層中,大量采用觀察者模式建立數(shù)據(jù)層與顯示層的聯(lián)系。一個顯示層的視圖,可以做成某一種觀察者注冊到Cursor或ContentResolver等數(shù)據(jù)中間層中,在實現(xiàn)底層ContentProvider中,我們需要特別注意在對數(shù)據(jù)進行修改操作(包括增刪改...)后,調(diào)用相應(yīng)類型的notify函數(shù),幫助表層對象進行刷新(還有一種刷新方式是從一個view發(fā)起的)。可以看到 Android的整體數(shù)據(jù)顯示框架有點像MVC的方式。Cursor、ContentResolver相當(dāng)于控制層,數(shù)據(jù)層和顯示層的交互通過控制層來掌管,而且控制層很穩(wěn)定不需要特別定制,通常工作只在定制數(shù)據(jù)層和顯示層空間,還是比較方便和清晰的。

10.學(xué)習(xí)感想

通過這學(xué)期對安卓的學(xué)習(xí),大概了解了以上一些知識,對安卓有了初步的了解,這幾個月給我的東西我想用有形的和無形的兩部分概敘,形的當(dāng)然就是技術(shù)水平的長進,雖然其中肯定有很多的不足,相信慢慢會體會到。

第四篇:安卓軟件開發(fā)培訓(xùn)學(xué)校的選擇

安卓軟件開發(fā)培訓(xùn)學(xué)校的選擇

安卓占據(jù)移動操作系統(tǒng)市場58.8%,在中國市場占有率為68.4%,可以說Android火了,并且呈現(xiàn)出一種不可阻擋地態(tài)勢。而隨著Android浪潮席卷市場,學(xué)習(xí)Android也隨之流行,并引發(fā)了新一輪IT培訓(xùn)選擇——安卓培訓(xùn),但是在此,歐柏泰克軟件學(xué)院的老師卻要提醒大家,安卓培訓(xùn)雖然好,但是不要忘記先打好基礎(chǔ),而對于安卓軟件培訓(xùn)學(xué)校的選擇也必須要特別注意。

android課程緊跟時代潮流,順應(yīng)時代趨勢,是一個非常先進,但是卻并不完全成熟的一個軟件開發(fā)培訓(xùn)課程,并且這個課程需要建立在良好的計算機軟件開發(fā)基礎(chǔ)上。在學(xué)習(xí)安卓軟件開發(fā)技術(shù)之前,熟練的掌握并且運用java、.net等基礎(chǔ)知識,十分有必要,而相對于安卓技術(shù)來說,我們更加需要的則是一個良好的實訓(xùn)環(huán)境,以下我們來簡單分析一下。

歐柏泰克軟件學(xué)院是湖南省 歐柏泰克軟件學(xué)院是直屬歐柏泰克軟件外包科技園的軟件專業(yè)名牌學(xué)府,是國內(nèi)唯一擁有軟件科技園的軟件專業(yè)名牌學(xué)府,創(chuàng)辦近10年來,已培養(yǎng)了上萬名高薪軟件工程師,擁有與北京大學(xué)、清華大學(xué)合作開展IT職業(yè)教育的成熟經(jīng)驗,由主持清華大學(xué)IT職業(yè)教育的權(quán)威教育專家擔(dān)任校長,連續(xù)多年被教育局評為“優(yōu)秀學(xué)校”。Java和.net作為歐柏泰克軟件學(xué)院的兩大主體專業(yè),就業(yè)率一直名列前茅。

而2011年年底竣工的歐柏泰克軟件學(xué)院新校區(qū)占地10萬平米,耗資數(shù)億元,其中歐柏泰克軟件學(xué)院校區(qū)與歐柏泰克軟件科技園毗鄰,更加有利于學(xué)生接觸職場以及最新的技術(shù)。安卓培訓(xùn)課程講師認(rèn)為:學(xué)生有意愿從事安卓Android的開發(fā),想在移動互聯(lián)網(wǎng)行業(yè)發(fā)展,不僅要在課堂上學(xué)好理論知識,掌握好實踐項目,同時愿意與在線學(xué)員經(jīng)驗分享,而且還必須有一個真實的實訓(xùn)環(huán)境,讓他們了解崗位的具體情況。只有這樣才能真正的了解安卓軟件開發(fā)。

歐柏泰克軟件學(xué)院的老師還說,除了要首先掌握好計算機軟件開發(fā)技術(shù),還有非常重要的一點是不論在學(xué)校還是在工作崗位都不能停止學(xué)習(xí),軟件開發(fā),安卓軟件開發(fā)都是瞬息萬變的技術(shù),從事IT行業(yè)必須緊張時代潮流。

第五篇:如何學(xué)習(xí)安卓

如何學(xué)習(xí)安卓

想學(xué)編程開發(fā),那要先會一門編程語言,現(xiàn)在可以試著去學(xué)學(xué)C語言,雖然這個安卓沾不上邊,但是,C語言的編程思想還是很重要的,學(xué)完了C語言之后,他的語法基本上和所有的編程語言都很相像,能影響你的思維,幫助你理解其他的編程語言的。之后呢,在好好看看《數(shù)據(jù)結(jié)構(gòu)》,這很重要。然后再去學(xué)學(xué)Java語言,因為Android的應(yīng)用的開發(fā)語言用的是Java,所以一定要好好學(xué)習(xí)。

最后了解下數(shù)據(jù)庫,我們在學(xué)習(xí)數(shù)據(jù)庫之前都先學(xué)了《數(shù)據(jù)庫原理》《離散數(shù)學(xué)》《關(guān)系代數(shù)》,有了這些基礎(chǔ)之后再去學(xué)數(shù)據(jù)庫,數(shù)據(jù)庫也有很多可以選擇的,推薦mysql。

加油!

下載深圳安卓應(yīng)用程序技術(shù)培訓(xùn)學(xué)校資料word格式文檔
下載深圳安卓應(yīng)用程序技術(shù)培訓(xùn)學(xué)校資料.doc
將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
點此處下載文檔

文檔為doc格式


聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進行舉報,并提供相關(guān)證據(jù),工作人員會在5個工作日內(nèi)聯(lián)系你,一經(jīng)查實,本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

相關(guān)范文推薦

    安卓實驗報告五篇

    安卓實驗報告 班級:學(xué)號:姓名:xxxxx 11111111 xxxx 實驗一:Activity生命周期的測試 一:實驗?zāi)康?掌握使用Eclipse開發(fā)Android應(yīng)用開發(fā)程序的方法; 掌握Android虛擬設(shè)備的創(chuàng)建方......

    最佳安卓游戲

    2010 年度最易上癮游戲 年度最易上癮游戲 憤怒的小鳥 Angry Birds 瞄準(zhǔn)射擊 shoot U! 涂鴉切割 Slice It! 碧湖垂釣 Fishin2 Go 涂鴉跳躍 Doodle Jump 重力滾球迷宮 Labyrin......

    安卓 課程學(xué)習(xí)心得

    心得體會 學(xué)號: 姓名: 班級: 一開始接觸 Android 是從自己的手機開始的,覺得它很酷,是我喜歡的風(fēng)格,然后我就通過了一些網(wǎng)絡(luò)渠道去了解Android。在選課的時候發(fā)現(xiàn)有這個課程,于是我......

    安卓實習(xí)報告

    通信與電子信息專業(yè)實訓(xùn)報告項目名稱:基于android的游戲開發(fā)班 級 10通信1班姓 名學(xué) 號指導(dǎo)教師 成 績實訓(xùn)時間:年月日—目錄 一、實訓(xùn)目的及其意義 .............................

    安卓手機培訓(xùn)

    安卓系統(tǒng): 簡介:Android一詞的本義指“機器人”,同時也是Google于2007年11月5日宣布的基于Linux平臺的開源手機操作系統(tǒng)的名稱,該平臺由操作系統(tǒng)、中間件、用戶界面和應(yīng)用軟件組......

    個人事跡材料-安卓

    個人事跡材料 我是經(jīng)濟管理系11級酒店管理的方亮,自入團以來積極參加團組織的各類活動。努力完成團組織交給的任務(wù),時時刻刻記住我應(yīng)該做什么,如何做好的思想理念。 我深刻認(rèn)......

    安卓課程設(shè)計報告

    安 卓 課 程 設(shè) 計 班 級 09級計算機二班 學(xué) 號 20097923 姓 名 郭丹 目錄 第1章安卓應(yīng)用程序開發(fā)背景 .......................................................... 3 §1......

    安卓系統(tǒng)簡介

    安卓系統(tǒng)簡介 操作系統(tǒng)是計算機系統(tǒng)的基本組成部分,計算機技術(shù)的飛速發(fā)展和日益廣泛的應(yīng)用使得操作系統(tǒng)的類型,作用、計算環(huán)境等均發(fā)生了較大的變化。近十年來,新技術(shù)的出現(xiàn)......

主站蜘蛛池模板: 精品久久久久久综合日本| 亚洲精品伦理熟女国产一区二区| 男人吃奶摸下挵进去啪啪软件| 中文字幕一本性无码| 影音先锋人妻每日资源站| 特黄熟妇丰满人妻无码| 久久www免费人咸_看片| 国产人妻鲁鲁一区二区| 免费 黄 色 人成 视频 在 线| 国产成人无码一区二区三区在线| 国产亚洲人成网站在线观看| 国精品午夜福利视频| 成人动漫综合网| 又湿又黄裸乳漫画无遮挡网站| 妺妺窝人体色777777| 男插女高潮一区二区| 国产午夜无码片在线观看网站| 国产乱色精品成人免费视频| 中文字幕乱码中文乱码51精品| 24小时日本在线www免费的| 丰满少妇大力进入av亚洲| 久久亚洲中文字幕精品一区| 成在人线av无码免费高潮水| 清纯唯美经典一区二区| 久久99精品国产麻豆宅宅| 国产无套内射久久久国产| 国产午夜亚洲精品不卡下载| 久久99热这里只频精品6| 久久99热只有频精品6国语| 亚洲精品久久久无码一区二区| 亚洲欧洲精品无码av| 久激情内射婷内射蜜桃人妖| 日韩人妻无码精品一专区二区三区| av性色av久久无码ai换脸| 亚洲人成中文字幕在线观看| 国产精品毛片无码| 胸大美女又黄的网站| 色噜噜久久综合伊人一本| 欧美性大战久久久久久| 国产乱人伦av在线a| 久久精品亚洲精品国产色婷|