第一篇:Android實習(xí)心得
Android實習(xí)心得
剛開始接觸Android感覺到它很有意思,在界面開發(fā)上和web也可以形成了相通的架構(gòu),更加方便,視覺上也是非常的酷,在前期我通過的大量的Android SDK開發(fā)范例大全中的例子以及Android提供的APIDEMOS進行學(xué)習(xí),盡管例子之間的連接比較零散,不過通過這些例子的學(xué)習(xí)我可以學(xué)習(xí)到了很多和以前java上相通的思想。
我在為期半個月的實習(xí)中學(xué)到了很多在課堂上根本就學(xué)不到的知識,收益非淺.現(xiàn)在我對這半個月的實習(xí)做一個工作小結(jié)。
1通過半個月的android實習(xí),基本掌握了Android應(yīng)用程序開發(fā)的一般流程。對常用控件基本掌握其用法,對其事件的監(jiān)聽方法也基本掌握。學(xué)習(xí)Android不僅是對前沿開發(fā)技術(shù)的了解,也是對編程知識的一次提升。
2通過學(xué)習(xí)Android的控件、布局、Activity、Service等一系列基礎(chǔ)知識,對整個Android的開發(fā)有了大致的了解。例如: 要的布局(或者控件),在學(xué)習(xí)界面中,我發(fā)現(xiàn)Android為我們提供了很好的類似反射機制,通過Layout文件夾下的配置文件,可以快速的形成界面,在配置文件可以設(shè)置屬性或者樣式都是很快捷方便。對比較特殊的界面也可以通過處理嵌入到指定的界面,同樣你可以通過java代碼直接創(chuàng)建View進行添加,不過這種方式比較復(fù)雜。對一些點擊、選中、按鍵等處理的事件,界面之間的跳轉(zhuǎn)Intent管理,通過Bundle對數(shù)據(jù)在界面之間進行傳輸。
4在手機交互式通信服務(wù)中,學(xué)習(xí)了Android手機之間進行短信發(fā)送、廣播、對廣播的監(jiān)聽、服務(wù)等,在Service類中沒有context,可以通過Handler來每秒反復(fù)運行,自動送出系統(tǒng)廣播信息,同時在這里我們也知道可以設(shè)計一個常用的變量類,設(shè)計一個當(dāng)前的CurrentActivity這個變量進行控制,進行處理。
在Android編程過程中鞏固熟悉了Java的編程。由于Android應(yīng)用程序的開發(fā)離不開Java的支持,所以基礎(chǔ)的Java知識是必須的。Android系統(tǒng)是基于Linux的手機操作系統(tǒng)平臺,要深入系統(tǒng)的學(xué)習(xí)Android,不僅僅是有Java和Android應(yīng)用開發(fā),必須要具備Linux,C/C++高級編程才能深入的涉及Android Framework和Android內(nèi)核開發(fā)。成為Android開發(fā)的高素質(zhì)人才。所以,在后續(xù)對Android的學(xué)習(xí)中可能會看一些較底層的書籍。
由于這次實習(xí)時間較短,對于Android應(yīng)用程序的高級編程講的很少,是這次實習(xí)中的不足。要想開發(fā)一些好的應(yīng)用程序,還需要更多的知識支持。在做實習(xí)最后的項目時,遇到了很多平時沒有遇到或者沒有特別關(guān)注的問題,如常見的Activity忘記注冊,對SD卡存取需要權(quán)限,在寫SQL語句時細微的錯誤就可能導(dǎo)致程序運行錯誤。這些問題只有自己在實際開發(fā)中才能體會到并且解決,并且在解決后可以長時間的記住。
通過Android的實習(xí),我們在大四畢業(yè)前,我們又掌握了一項新的前沿的開發(fā)技能,也有了更多的發(fā)展方向,這在以后的找工作的過程中無疑為我們增加了砝碼,也可以成為我們的一項興趣愛好,可以根據(jù)我們自己的需要設(shè)計一些小的程序??傊?,在這次實習(xí)中,我獲得了很多東西,提高了自己的編程技巧和編程方法,并且認識了Android應(yīng)用程序的開發(fā),以及加深了對Java的認識。
最后,通過實習(xí),我收獲了很多東西,特別是編程方面的,這對即將畢業(yè)的我們來說,這次實習(xí)是一次較為珍貴的充電,
第二篇:android實習(xí)
21日
今天是實習(xí)的第一天,上午聽了專家的講座,并分組和項目立項。下午的時候,開始了對于Android的學(xué)習(xí),我知道了Android系統(tǒng)的概述和特性,并且了解到了Android的體系結(jié)構(gòu)和常用系統(tǒng)庫,使我對Android有了簡單的了解。
22日
今天開始正式接觸Android軟件的開發(fā),先是要把開發(fā)的環(huán)境配好,工具(Eclipse)安裝好。了解了Android應(yīng)用程序的組成和目錄結(jié)構(gòu)。在下午的時候,開始學(xué)習(xí)Activity的系統(tǒng)原理和生命周期,并創(chuàng)建了Activity,對了Activity之間的跳轉(zhuǎn)這,我遇到了問題,沒有辦法跳轉(zhuǎn),經(jīng)過仔細盤查,原來是在跳轉(zhuǎn)到的Activity中沒有創(chuàng)建Intentintent = getIntent().在開發(fā)中要注意每一點,出現(xiàn)一點錯誤就可能使整個項目出現(xiàn)錯誤。
通過今天的學(xué)習(xí),根據(jù)自己的項目,創(chuàng)建了項目所需要的Activity,并在需要的地方加入了跳轉(zhuǎn)。
23日
今天上午,學(xué)習(xí)了文本框和編輯框:TextView,EditText;還有按鈕Button和ImageButton,發(fā)現(xiàn)TextView是顯示文本的,而EditText是輸入文本的,通過EditText,我自己編寫了一個計算器,使用了Intent傳值,實現(xiàn)了簡單的計算。在ImageButton中發(fā)現(xiàn)設(shè)置背景圖標(biāo)Background和src的不同,一個是設(shè)置按鈕背景,一個是在按鈕上加入了圖片。我在自己項目的主頁使用了ImageButton,使我的主頁更加炫了。
下午的時候?qū)W習(xí)到了怎么樣去布局,感覺使用RelativeLayout比LinearLayout方便,因為可以隨便的設(shè)置布局,更加的隨意,LinearLayout就會有很多的限制。不過LinearLayout布局相對簡單,不繁瑣,RelativeLayout布局相對麻煩,容易出現(xiàn)錯誤。
通過今天的學(xué)習(xí),在自己的項目中的Activity中根據(jù)需要修改了布局,在我的主頁中我使用了RelativeLayout,這樣可以使我對主頁的布局控制更加簡單,更加隨意,使我可以把主頁布置的更吸引人。而其他的一些次要界面,我使用的是LinearLayout,這樣更加方便。24日
今天學(xué)習(xí)到了Toast提示類,這個可以在點擊按鈕的時候顯示提示內(nèi)容,例如 Toast.makeText(first.this,”后退”,Toast.LENGTH_LONG).show();(first是我自己的文件名)。
對于menu類的用法和怎么取創(chuàng)建menu的監(jiān)控方法有了了解,就是在public boolean onOptionsItemSelected(MenuItem item)中加入監(jiān)控方法。在表單中我還用到了RadioButton和CheckBox。在下午的時候我知道了如何在內(nèi)存卡中存數(shù)據(jù)。RadioButton 和 CheckBox和java web表單中的這些功能幾乎一樣。
在項目中的主界面中的,我加入了menu菜單,在里面加入了兩個按鍵,一個是“關(guān)于 ”界面,是介紹項目的開發(fā)者和項目的版本的,還有一個是“退出”按鍵,并對其加入了Alert對話框,防止使用者不小心退出。而且也對返回鍵加入了對話框,在主界面中的按鈕加入了Toast提示,提示的時間是SHORT,不是LONG,這樣可以提醒使用者按下的是什么按鍵。
25日
今天老師講解了圖形框架,讓我知道了如何去使用Canvas類,Paint類。并且學(xué)會了如何繪制自定義UI、控件。
在下午的時候,學(xué)習(xí)了繪制文字,圖形和圖像,并且自己動手制作了軟件中的一些界面 26日
今天聽了企業(yè)專家講座,然后,老師為我們講解了如何去創(chuàng)建證書和簽名,并且指導(dǎo)我們在即動手去簽名打包,最后告訴我們軟件做的好的會發(fā)布到移動MM上去
27日
今天學(xué)習(xí)到了類似于Java中的Alert對話框,那就是AlertDialog,感覺Android和Java更加相似了,名字都差不多。當(dāng)然,還知道了用Dialog顯示的View是什么樣的。雖然之前我就在自己的項目中用到了對話框,但是這次的學(xué)習(xí)使我對對話框的了解更加深入了,使用更加靈活了。
下午學(xué)習(xí)到的東西非常重要,那就是Spinner,Gallery,TabHost還有ListView類,知道了Gallery可以使多張圖片通過滑動顯示在手機上。項目的主頁上有一個圖集,就是使用的Gallery,才使大量的圖片有了更好的操作。TabHost類似于網(wǎng)頁的標(biāo)簽,項目的“英雄”顯
示界面中的“技能介紹”和“出裝”介紹就是使用了TabHost,才可以在一個頁面上顯示出來。
28日
今天是Android數(shù)據(jù)庫的學(xué)習(xí),今天學(xué)會了如何去創(chuàng)建數(shù)據(jù)表,如何在表中實現(xiàn)增刪改查。下午的時候,通過創(chuàng)建ContentProvider來學(xué)習(xí)和了解ContentProvider。
29日
今天主要學(xué)習(xí)廣播,知道了如何發(fā)送廣播,監(jiān)聽廣播,注冊和取消廣播,并且通過廣播監(jiān)聽了手機接收短信。還學(xué)習(xí)了服務(wù),了解了創(chuàng)建服務(wù),啟動服務(wù),怎么樣綁定服務(wù)和進程間通信,明白了服務(wù)的生命周期。
30日
今天是最后一天,有項目答辯,所以項目需要完成,我講我小組的所有的內(nèi)容集合起來,形成一個完整的項目,并簽名打包
雖然這次培訓(xùn)時間很短,但是我從中學(xué)到了很多內(nèi)容。我知道了安卓的一些基本知識,并對其有了一定的了解,可以對其進行簡單的使用,可以
第三篇:android 開發(fā)心得
即 使你的應(yīng)用程序是快速且響應(yīng)靈敏的,但一些設(shè)計仍然會給用戶造成問題——與其它應(yīng)用程序或?qū)υ捒蛭词孪扔媱澋慕换ィ馔獾臄?shù)據(jù)丟失,意料之外的阻塞等等。避免這些問題,有助于理解應(yīng)用程序運行的上下文和系統(tǒng)的交互過程,而這些又正影響著你的應(yīng)用程序。簡而言之,你應(yīng)該竭盡全力去開發(fā)一個與系統(tǒng)和其它應(yīng)用程 序流暢交互的應(yīng)用程序。
一 個常見的流暢問題是,一個應(yīng)用程序的后臺處理——例如,一個 Service或者
BroadcastReceiver——彈出一個對話框來響應(yīng)一些事件。這可能看起來沒啥大礙,尤其是你在模擬器上單獨地構(gòu)建和測試你 的應(yīng)用程序的時候。然而,當(dāng)你的應(yīng)用程序運行在真機上時,有可能你的應(yīng)用程序在沒有獲得用戶焦點時后臺處理顯示了一個對話框。因此,可能會出現(xiàn)在活躍的應(yīng) 用程序后方顯示了你的應(yīng)用程序的對話框,或者從當(dāng)前應(yīng)用程序奪取焦點顯示了一個對話框,而不管當(dāng)前用戶正在做什么(例如,正在打電話)。那種行為,對應(yīng)用 程序或用戶來說,就不應(yīng)該出現(xiàn)。
為了避免這些問題,你的應(yīng)用程序應(yīng)該使用合適的系統(tǒng)資源來通知用戶——Notification類。使用Notification,你的應(yīng)用程序可以在狀態(tài)欄顯示一個 icon來通知用戶已經(jīng)發(fā)生的事情,而不是奪取焦點和打斷用戶。
另 一個流暢問題的例子是未能正確實現(xiàn)Activity的 onPause()和其它生命周期方法而造成意外丟失了狀態(tài)或用戶數(shù)據(jù)。又或者,如果你的應(yīng)用程序想暴露數(shù)據(jù)給其它應(yīng)用程序使用,你應(yīng)該通過 ContentProvider來暴露,而不是(舉例)通過一個可讀的原始文件或數(shù)據(jù)庫來實現(xiàn)。
這 些例子的共同點是它們都應(yīng)該與系統(tǒng)和其它應(yīng)用程序協(xié)作好。Android系統(tǒng)設(shè)計時,就把應(yīng)用程序看作是一堆松散耦合的組件,而不是一堆黑盒代碼。作為開 發(fā)者來說,允許我們把整個系統(tǒng)看作是更大的組件集合。這有益于我們可以與其它應(yīng)用程序進行清晰無縫的集成,因此,作為回報,我們應(yīng)該更好的設(shè)計我們的代 碼。
下面將討論常見的流暢問題以及如何避免它們:
一 定要記住Android是一個移動平臺。可以顯而易見地說,其它Activity(例如,“Incoming Phone Call”應(yīng)用程序)可能會在任何時候彈出來遮蓋你的Activity,記住這個事實很重要。因為這個過程將觸發(fā) onSaveInstanceState()和 onPause()方法,并可能導(dǎo)致你的應(yīng)用程序
被殺死。
如 果用戶在你的應(yīng)用程序中正在編輯數(shù)據(jù)時,其它 Activity出現(xiàn)了,這時,你的應(yīng)用程序被殺死時可能丟失那些數(shù)據(jù)。當(dāng)然了,除非你事先保存了正在進行的工作?!癆ndroid方式”是這樣做的:能 接收和編輯用戶輸入的 Android應(yīng)用程序應(yīng)該重寫 onSaveInstanceState()方法,并以恰當(dāng)?shù)姆绞奖4嫠鼈兊臓顟B(tài)。當(dāng)用戶重新訪問應(yīng)用程序時,她能得到她的數(shù)據(jù)。進行這種處理方式最經(jīng)典的例子是 mail應(yīng)用程序。如果用戶正在輸入 email,這時其它 Activity啟動了,mail應(yīng)用程序應(yīng)該把正在編輯的email以草稿的方式保存起來。
如果你不想穿著內(nèi)衣在大街上溜達的話,你的數(shù)據(jù)也不應(yīng)該這樣。盡管可能存在暴露應(yīng)用程序的某種形式給其它應(yīng)用程序,但這通常不是最好的主意。暴露原始數(shù)據(jù),要求其它應(yīng)用程序能夠理解你的數(shù)據(jù)的格式;如果你變更了格式,那么,你將破壞那些沒有進行同步更新的應(yīng)用程序。
“Android 方式”是創(chuàng)建一個 ContentProvider,以一種清晰的、深思熟慮的和可維護的API方式暴露你的數(shù)據(jù)給其它應(yīng)用程序。使用 ContentProvider,就好像是插入Java接口來分離和組裝兩片高耦合的代碼。這意味著你可以修改數(shù)據(jù)的內(nèi)部格式,而不用修改由 ContentProvider暴露的接口,這樣,也不會影響其它應(yīng)用程序。
如果用戶正在運行一個應(yīng)用程序(例如,Phone程序),斷定對用戶操作的目的才是安全的。這也就是為什么必須避免創(chuàng)建Activity,而是直接在當(dāng)前的 Activity中響應(yīng)用戶的輸入。那 就是說,不要在 BroadcastReceiver或在后臺運行的 Service中調(diào)用 callActivity()。這么做會中斷當(dāng)前運行的應(yīng)用程序,并導(dǎo)致用戶惱怒。也許更糟糕的是,你的 Activity可能成為“按鍵強盜”,竊取了用戶要提供給前一個 Activity的輸入。視乎你的應(yīng)用程序所做的事情,這可能是個壞消息。
不 選擇在后臺直接創(chuàng)建 Activity UI,取而代之的是,應(yīng)該使用NotificationManager來設(shè)置 Notification。它們會出現(xiàn)在狀態(tài)欄,并且用戶可以在他空閑的時候點擊它們,來查看你的應(yīng)用程序向他顯示了什么。(注意,如果你的 Activity已經(jīng)在前臺了,以上將不適用:這時,對于用戶的輸入,用戶期望的是看到下一個 Activity來響應(yīng))
如果你的應(yīng)用程序需要執(zhí)行一些昂貴或耗時的計算的話,你應(yīng)該盡可能地將它挪到線程里。這將阻止向用戶顯示可怕的“Application Not Responding”對話框,如果不這樣做,最終的結(jié)果會導(dǎo)致你的應(yīng)用程序完全終止。
一 般情況下,Activity中的所有代碼,包括它的 View,都運行在相同的線程里。在這個線程里,還需要處理UI事件。例如,當(dāng)用戶按下一個按鍵,一個 key-down事件就會添加到 Activity的主線程隊列里。事件處理系統(tǒng)需要很快讓這個事件出列并得到處理;如果沒有,系統(tǒng)數(shù)秒后會認為應(yīng)用程序已經(jīng)掛起并為用戶提供殺死應(yīng)用程序 的機會。
如果有耗時的代碼,內(nèi)聯(lián)在Activity上運行也就是運行在事件處理線程里,這在很大程度上阻塞了事件處理。這會延遲輸入處理,并導(dǎo)致ANR對話框。為了避免這個,把你的計算移到線程里。
任 何值得使用的應(yīng)用程序都可能有幾個不同的屏幕。當(dāng)設(shè)計UI屏幕時,請一定要使用多個Activity對象實例。依賴于你的開發(fā)背景,你可能理解 Activity類似于 Java Applet,它是你應(yīng)用程序的入口點。然而,那并不精確:Applet子類是一個 Java Applet的單一入口點,而一個Activity應(yīng)該看作是你的應(yīng)用程序多個潛在入口點之一。你的“main”Activity和其它之間的唯一不同點 是“main”Activity正巧是在AndroidManifest.xml文件中唯一對“android.intent.action.MAIN”動作感興趣的Activity。因此,當(dāng)設(shè)計你的應(yīng)用程序的時候,把你的應(yīng)用程序看作是Activity對象的 集合。從長遠來看,這會使得你的代碼更加方便維護。
當(dāng) 談到 UI觀感時,巧妙地交融非常重要。用戶在使用與自己期望相反的 UI的應(yīng)用程序時,會產(chǎn)生不愉快的感覺。當(dāng)設(shè)計你的 UI時,你應(yīng)該盡量避免太多自己的主題。相反的,使用同一個主題。你可以重寫或擴展你需要的主題部分,但至少在與其它應(yīng)用程序相同的 UI基礎(chǔ)上開始。
不 同的 Android設(shè)備可能支持不同的屏幕分辨率。甚至一些可以自己變更分辨率,例如,切換到風(fēng)景模式。確保你的布局和圖片能足夠靈活地在不同的設(shè)備屏幕上正 常顯示。幸運的是,這很容易做到。簡而言之,你需要做的是為主要分辨率提供不同版本的作品,然后為不同的尺寸設(shè)計你的布局。(例如,避免使用硬編碼位置而 使用相對布局。)如果那樣做的話,系統(tǒng)會處理剩下的部分,而且你的應(yīng)用程序在任何設(shè)備上都看起來很棒。
Android設(shè)備會有多種網(wǎng)絡(luò)連接選項。所有的都提供數(shù)據(jù)訪問,但之間肯定有更快的。其中,速度最慢的是GPRS,GSM網(wǎng)絡(luò)的非 3G數(shù)據(jù)服務(wù)。即使具備 3G能力的設(shè)備在非3G的網(wǎng)絡(luò)上也會花費很多的時間,所以,網(wǎng)絡(luò)很慢仍然是一個長期存在的事實。
這 就是為什么你應(yīng)該按照最小化的網(wǎng)絡(luò)訪問和帶寬來編寫你的代碼。你不能假設(shè)網(wǎng)絡(luò)是快速的,所以,你應(yīng)該總是計劃它是慢的。如果你的用戶碰巧在一個快速的網(wǎng)絡(luò) 上,那很好——他們的用戶體驗會提升。你要避免相反的情形:在不同的地點和不同時間,應(yīng)用程序有時可用,有時慢得令人抓狂,這樣的程序可能不會受歡迎。
還 有一個潛在的地方是,如果你正在使用模擬器,那么你很容易受它迷糊,因為模擬器使用電腦的網(wǎng)絡(luò)連接。這比手機網(wǎng)絡(luò)快很多,所以,你需要修改模擬器設(shè)定來模 擬較低的網(wǎng)絡(luò)速度。你可以在 Eclipse中做到這點,在啟動選項的模擬器設(shè)置頁里設(shè)置或者在啟動模擬器時通過命令行選項設(shè)置。
Android 可以支持多種外觀形狀。也就是說,一些Android設(shè)備擁有全“QWERTY”鍵盤,而其它可能會有40鍵、12鍵或其它鍵盤設(shè)置。同樣的,一些設(shè)備可 能有觸摸屏,但一些也會沒有。當(dāng)創(chuàng)建你的應(yīng)用程序的時候,記住這一點。不要假定特定的鍵盤布局——除非你真的想限定你的應(yīng)用程序只運行在某些設(shè)備上。
如 果移動設(shè)備經(jīng)常插在墻上,那么,它也就不是很“移動”。移動設(shè)備是電池供電的,如果我們能讓每次充電的電池使用得更持久一些,那么每個人都會更加開心—— 尤其是用戶。
其中兩大耗電硬件是處理器和無線;這也就是我們?yōu)槭裁匆獙懕M可能少做工作、盡可能少去使用網(wǎng)絡(luò)的應(yīng)用程序的重要原因。
如 何讓你的應(yīng)用程序最小化的占用處理器,歸根結(jié)底還是要寫高效代碼。為了減少無線的電量消耗,確保對錯誤條件進行正確的處理,并只獲取你要的東西。例如,如 果某一個網(wǎng)絡(luò)操作失敗了,不要不斷地進行重試。如果失敗了一次,有可能是用戶不受歡迎,因此,如果你再以正確的方式操作,有可能還會失敗;所有你做的都是 在浪費電池。
用戶是相當(dāng)聰明的:如果你的程序高耗電,他們是一定會發(fā)現(xiàn)的。到那個時點,你唯一可以確定的是,你的程序?qū)⒑芸毂恍遁d掉。
第四篇:Android實習(xí)總結(jié)報告
實習(xí)時間:學(xué)院:專業(yè)名稱:學(xué)號:姓名:指導(dǎo)老師:實習(xí)地點:
Xxxxxx大學(xué)
專業(yè)實習(xí)報告
——201X.XX.XX
XXXXXXXXXXX學(xué)院 計算機通信
信息技術(shù)有限公司 201X.XX.X XXXXXXXXXX XXXX XXXX XXXXXXXX
一、實訓(xùn)地點
XXXXXXXX信息技術(shù)有限公司是一家隸屬于XXXXXXXX集團主要從事軟件開發(fā)、技術(shù)咨詢與服務(wù)、IT教育投資、大學(xué)生實習(xí)實訓(xùn)等業(yè)務(wù)的民營科技型企業(yè)。
二、實訓(xùn)目的
到實際生產(chǎn)中的種種Android
Android現(xiàn)對androidAndroid
Android
android實習(xí)可以讓我們與時代最目的:
1、培養(yǎng)學(xué)生運用所學(xué)課程Java語言程序設(shè)計的理論知識和技能,分析解決計算機實際應(yīng)用中的問題的能力。
培養(yǎng)學(xué)生在Java語言程序設(shè)計的基礎(chǔ)上,開發(fā)Android應(yīng)用程序的思想和方法。培養(yǎng)學(xué)生調(diào)查研究、查閱技術(shù)文獻、資料、手冊以及編寫技術(shù)文獻的能力。通過課程設(shè)計,要求學(xué)生在指導(dǎo)教師的指導(dǎo)下,獨立完成課程設(shè)計的全部內(nèi)容 包括:
1、確定開發(fā)的程序,收集和調(diào)查有關(guān)技術(shù)資料。
2、按軟件工程步驟進行程序設(shè)計。
3、對完成的程序進行測試和完善。
4、完成課程設(shè)計報告。
三、實訓(xùn)內(nèi)容
學(xué)習(xí)實訓(xùn)的內(nèi)容主要包括如下:
? 開發(fā)環(huán)境:了解了android的起源與發(fā)展,學(xué)習(xí)安裝 Eclipse 插件(ADT)學(xué)習(xí)AndroidSDK包含了開發(fā)Android應(yīng)用所依賴的jar文件、運行環(huán)境及相關(guān)工具
? Android項目結(jié)構(gòu):src/ java原代碼存放目錄 gen/ 自動生成目錄 gen 目錄中存放所有由Android開發(fā)工具自動生成的文件。目錄中最重要的就是R.java文件。這個文件由Android開發(fā)工具自動產(chǎn)生的。res/ 資源(Resource)目錄 在這個目錄中我們可以存放應(yīng)用使用到的各種資源,如xml界面文件,圖片或數(shù)據(jù)。assets資源目錄Android除了提供/res目錄存放資源文件外,在/assets目錄也可以存放資源文件。AndroidManifest.xml 項目清單文件。
? 基礎(chǔ)開發(fā)
一、1.Activity:是Android系統(tǒng)中的四大組件之一。2.Activity生命周期:void onCreate(Bundle savedInstanceState)void onStart()void onRestart()void onResume()void onPause()void onStop()void onDestroy()這七個方法定義了Activity的完整生命周期
二、Intent: Intent對他要完成操作的一種抽象描述,我們可以用intent來啟動一個activity,發(fā)起一個broadcast和啟動或綁定一個service。Intent使應(yīng)用程序代碼在運行時動態(tài)綁定成為可能,這也降低了不同代碼之間的耦合性。Intent最常使用的方法是用來啟動一個activity。Intent封裝了他要執(zhí)行動作的屬性,這些屬性最常見的是action和data Intent主要有以下四個重要屬性:dssAction:Action屬性的值為一個字符串,它代表了系統(tǒng)中已經(jīng)定義了一系列常用的動作。通過setAction()方法或在清單文件AndroidManifest.xml中設(shè)置。默認為:DEFAULT。
Data:Data通常是URI格式定義的操作數(shù)據(jù)。例如:tel://。通過setData()方法設(shè)置。
Category:Category屬性用于指定當(dāng)前動作(Action)被執(zhí)行的環(huán)境。通過addCategory()方法或在清單文件AndroidManifest.xml中設(shè)置。默認為:CATEGORY_DEFAULT。
Extras:Extras屬性主要用于傳遞目標(biāo)組件所需要的額外的數(shù)據(jù)。通過putExtras()方法設(shè)置。
三、Service四大主鍵職業(yè),服務(wù)一般沒有用戶操作界面,它運行于系統(tǒng)中不容易被用戶發(fā)覺,可以使用它開發(fā)如監(jiān)控之類的程序。要完成比較耗時的任務(wù);不需要用戶界面;
四、BroadcastRecever 生命周期
1.在廣播到達接收者時調(diào)用onRecever();方法
2.注冊廣播的幾種方式包括:代碼注冊;項目清單注冊;
五、Handler 1.Handler、Message、MessageQueue和Looper之間的關(guān)系的關(guān)系,Handler的作用: Handler(一個線程可以有多個Handler但是只能有一個Looper), 關(guān)系:向消息對列(MessageQueue封裝在Looper中)發(fā)送消息,Handler在創(chuàng)建時就會關(guān)聯(lián)以個Looper默認關(guān)聯(lián)當(dāng)前Looper.作用:發(fā)送消息(Handler在主線程啟動一個子線程,在子線程調(diào)用SendMassager(),發(fā)送到主線程的HandlerMessage()方法);處理消息(調(diào)用HandlerMessage()方法處理)。
? 數(shù)據(jù)存儲
一、Sharepreference:保存應(yīng)用系統(tǒng)的配置信息等的鍵值存儲機制。(使用鍵值機制:Bundle ContentValues Map JSONObjecdt)
二、存儲方式 1)是一種鍵值存儲方式,可以持久化存儲變量的值(Sharepreference存儲的值都是基本類型的數(shù)據(jù))存儲的數(shù)據(jù)是以xml文件的形式存在,存儲在/data/data/packagename/shared_prefs目錄中文件存儲
I/O存儲,主要是用于大文件的數(shù)據(jù)的存取,比如視頻、圖片等,該中存儲方式在使用的過程當(dāng)中更新比較困難。
文件存儲的使用:Activity提供了openFileOutput(name,mode)方法和openFileInput()方法,用于讀寫文件數(shù)據(jù).第一個參數(shù)name中不能包含路徑分隔符“/”
三、Sqlite
自定義一個數(shù)據(jù)庫的操作類,該類要extends SQLiteOpenHelper類
public class MyHelper extends SQLiteOpenHelper { //類沒有實例化,是不能用作父類構(gòu)造器的參數(shù),必須聲明為靜態(tài)
private static final String name = “china”;//數(shù)據(jù)庫名稱 private static final int version = 1;//數(shù)據(jù)庫版本 public MyHelper(Context context){ //第三個參數(shù)CursorFactory指定在執(zhí)行查詢時獲得一個游標(biāo)實例的工廠類,設(shè)置為null,代表使用系統(tǒng)默認的工廠類
super(context, name, null, version);} public void onCreate(SQLiteDatabase db){
//該方法是在第一次實例化數(shù)據(jù)庫操作對象的時候被調(diào)用
//可以在其中做一些初始化的工作,比如創(chuàng)建數(shù)據(jù)庫表等
} public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){
//在數(shù)據(jù)庫的版本發(fā)生改變的時候會被調(diào)用
} }
四、ContentProvider 實現(xiàn)不同應(yīng)用之間數(shù)據(jù)的訪問和共享: 1)通過實現(xiàn)一個ContentProvider的抽象借口,將本應(yīng)用的數(shù)據(jù)完全暴露出去,其中數(shù)據(jù)是以表的形式暴露的,暴露數(shù)據(jù)的時候要提供公共的URI。
2)其它應(yīng)用通過android提供的ContentResolver接口訪問ContentProvider暴露的數(shù)據(jù)。
五、網(wǎng)絡(luò)存儲
一、通過網(wǎng)絡(luò)提供的存儲空間來上傳或者是下載那些存儲在網(wǎng)絡(luò)空間的數(shù)據(jù)信息。
網(wǎng)絡(luò)編程:分為兩種 1)基于Socket的網(wǎng)絡(luò)編程:該網(wǎng)絡(luò)編程使用的協(xié)議主要是TCP和UDP協(xié)議
面試題:TCP和UDP區(qū)別:TCP:面向連接 可靠 延時長 效率低UDP:面向無連接 不可靠 延時短 效率高Socket+ServerSocket+TCP(套接字)UDP+DatagrarmSocket+DatagramPackage(數(shù)據(jù)報)2)基于Http的網(wǎng)絡(luò)編程:
? 該網(wǎng)絡(luò)編程使用的協(xié)議是面向Http協(xié)議; ? 該網(wǎng)絡(luò)編程是以xml/json格式的數(shù)據(jù)為載體,來進行相互通信數(shù)據(jù); ? Android基于http協(xié)議的網(wǎng)絡(luò)編程,使用的標(biāo)準(zhǔn)接口有兩個:HttpURLConnection以及apatch的接口HttpClient Http協(xié)議通信分為兩種方式:get請求方式和post請求方式
六、Xml格式數(shù)據(jù)解析Json格式數(shù)據(jù)解析:
Dom解析:dom解析一般是把xml文檔轉(zhuǎn)換成一棵文檔節(jié)點樹,存儲在內(nèi)存中
優(yōu)點:xml文檔樹在內(nèi)存中完整存儲,可以直接對該文檔樹的數(shù)據(jù)和結(jié)構(gòu)進行修改;可以通過解析器去訪問節(jié)點樹上的任何一個節(jié)點;Dom解析的API使用簡單方便。
缺點:當(dāng)xml文檔比較大的時候,該解析方式消耗內(nèi)存資源 Sax解析:
優(yōu)點:對內(nèi)存的要求較低,方便解析xml的部分;
缺點:當(dāng)xml文檔結(jié)構(gòu)復(fù)雜的采用SAX解析,編碼過程比較復(fù)雜 Pull解析:sdk提供的內(nèi)置解析方式,解析過程類似于sax解析,節(jié)省內(nèi)存資源,而且比sax解析更加簡單方便。
JSON格式數(shù)據(jù):(1)key-value鍵值對象(無序的)(2)數(shù)組(有序的)
用到的內(nèi)容包含:4個類一個異常
JSON格式數(shù)據(jù)的解析可以使用Google提供的gson解析工具 問題:xml格式數(shù)據(jù)解析和JSON格式數(shù)據(jù)解析的比較
四、實訓(xùn)心得:
1通過幾個月的android實習(xí),基本掌握了Android應(yīng)用程序開發(fā)的一般流程。對常用控件基本掌握其用法,對其事件的監(jiān)聽方法也基本掌握。學(xué)習(xí)Android不僅是對前沿開發(fā)技術(shù)的了解,也是對編程知識的一次提升。
2通過學(xué)習(xí)Android的控件、布局、Activity、Service等一系列基礎(chǔ)知識,對整個Android的開發(fā)有了大致的了解。例如: 要的布局(或者控件),在學(xué)習(xí)界面中,我發(fā)現(xiàn)Android為我們提供了很好的類似反射機制,通過Layout文件夾下的配置文件,可以快速的形成界面,在配置文件可以設(shè)置屬性或者樣式都是很快捷方便。對比較特殊的界面也可以通過處理嵌入到指定的界面,同樣你可以通過java代碼直接創(chuàng)建View進行添加,不過這種方式比較復(fù)雜。對一些點擊、選中、按鍵等處理的事件,界面之間的 跳轉(zhuǎn)Intent管理,通過Bundle對數(shù)據(jù)在界面之間進行傳輸。
4在手機交互式通信服務(wù)中,學(xué)習(xí)了Android手機之間進行短信發(fā)送、廣播、對廣播的監(jiān)聽、服務(wù)等,在Service類中沒有context,可以通過Handler來每秒反復(fù)運行,自動送出系統(tǒng)廣播信息,同時在這里我們也知道可以設(shè)計一個常用的變量類,設(shè)計一個當(dāng)前的CurrentActivity這個變量進行控制,進行處理。
在Android編程過程中鞏固熟悉了Java的編程。由于Android應(yīng)用程序的開發(fā)離不開Java的支持,所以基礎(chǔ)的Java知識是必須的。Android系統(tǒng)是基于Linux的手機操作系統(tǒng)平臺,要深入系統(tǒng)的學(xué)習(xí)Android,不僅僅是有Java和Android應(yīng)用開發(fā),必須要具備Linux,C/C++高級編程才能深入的涉及Android Framework和Android內(nèi)核開發(fā)。成為Android開發(fā)的高素質(zhì)人才。所以,在后續(xù)對Android的學(xué)習(xí)中可能會看一些較底層的書籍。
第五篇:android實習(xí)報告
實習(xí)報告
實習(xí)目的:
生產(chǎn)實習(xí)是計算機科學(xué)與技術(shù)專業(yè)重要的實踐性教學(xué)活動,其目的是使學(xué)生們進一步加深對所學(xué)知識的理解,理論聯(lián)系實際,鞏固所學(xué)有關(guān)計算機基礎(chǔ)理論知識和基本技能,學(xué)習(xí)有關(guān)計算機最新技術(shù)方面的應(yīng)用,增強學(xué)生對計算機在社會生活,社會生產(chǎn)中應(yīng)用的感性認識,深入了解計算機在各個領(lǐng)域中的應(yīng)用狀況,學(xué)生在實習(xí)的同時,進行一定的社會實踐與調(diào)查活動,對于提高學(xué)生的綜合能力和全面素質(zhì)具有重要意義。
實習(xí)內(nèi)容:
Android主要有四大組件,分別為:Activity 活動、Service 服務(wù)、Broadcast receivers 廣播接受者、Content Provider 內(nèi)容提供者。還有上激活組件Intent。
1.Activity
Activity就是一個用戶可以直接接觸并看到的窗口,當(dāng)新建一個Android Project后可以
看到在工程文件下的src中有一個已建好的java類FirstActivity,系統(tǒng)也會自動為他配備一個布局文件main.xml,并在AndroidManifest中對此Activity進行注冊。
用戶想要自己創(chuàng)建一個Activity,首先創(chuàng)建一個java類繼承自Activity,可以為他配備一個布局文件用來顯示Activity創(chuàng)建后的布局。最后在主配置文件manifest.xml中對創(chuàng)建的Activity進行注冊,這一步是必不可少的,沒有注冊Activity無法運行。
在manifest.xml中會有許多的Activity,但系統(tǒng)一次只能運行一個Activity,因此必須修選定一個最先運行的Activity。在注冊Activity是加入
可指定當(dāng)前的Activity為主Activity最先被執(zhí)行。其他Activity可借助激活組件Intent
進行啟動。通過Intent還可實現(xiàn)來了兩個Activity之間傳遞數(shù)據(jù)
Activity具有生命周期,他有三種狀態(tài):運行狀態(tài)、暫停信息和停止?fàn)顟B(tài)。運行態(tài)是在屏幕臺前位于當(dāng)前任務(wù)堆棧的頂部,即獲取焦點的Activity。暫停信息是指失去了焦點但對于用戶仍可見,此狀態(tài)下當(dāng)程序處于低內(nèi)存是仍有可能被消除。停止?fàn)顟B(tài)是指完全被另一個Activity覆蓋,但他仍然保留所有的信息與狀態(tài)。
2.Android圖形設(shè)計UI
Android UI控件一般寫在布局文件中,此次實習(xí)所學(xué)控件主要有:TextView,EditText
Button、AlertDialog、RadioButton、CheckBox、Spinner和TableRow等。將這些控件及相應(yīng)的屬性寫在layout下的布局文件中就可在與其綁定的Activity中顯示相應(yīng)的對話框,文本框,按鈕等。
Android的界面布局是為了使控件能夠更友好的呈現(xiàn)在用戶的眼中。主要有:絕對布局Absolutelayout、線形布局LinearLayout、框架布局FramLayout、相對布局RelativeLayout和
表格布局TableLayout。其中框架布局適合于單張圖片的顯示。
3.Service 服務(wù)
Service事實運行在后臺的一段代碼。他與Activity一樣有相似的生命周期,但不同的是他不能自己運行,必須通過某一個Activity或者其他的Context對象來調(diào)用。
Service可通過調(diào)用Context.StartService()啟動,還可以通過ServiceConnection來訪問Service。可以將其他的組件綁定到Service上。
4.數(shù)據(jù)存儲
Activity提供了openFileOutput()方法可以用于把數(shù)據(jù)輸出到文件中,具體的實現(xiàn)過程與在J2SE環(huán)境中保存數(shù)據(jù)到文件中是一樣的。
openFileOutput()方法的第一參數(shù)用于指定文件名稱,不能包含路徑分隔符“/”,如果文件不存在,Android 會自動創(chuàng)建它。創(chuàng)建的文件保存在/data/data/
/files目錄,如: /data/data/cn.itcast.action/files/itcast.txt,通過點擊Eclipse菜單“Window”-“Show View”-“Other”,在對話窗口中展開android文件夾,選擇下面的File Explorer視圖,然后在File Explorer視圖中展開/data/data/
/files目錄就可以看到該文件。
openFileOutput()方法的第二參數(shù)用于指定操作模式,有四種模式android有一套自己的安全模型,當(dāng)應(yīng)用程序(.apk)在安裝時系統(tǒng)就會分配給他一個userid,當(dāng)該應(yīng)用要去訪問其他資源比如文件的時候,就需要userid匹配。默認情況下,任何應(yīng)用創(chuàng)建的文件,sharedpreferences,數(shù)據(jù)庫都應(yīng)該是私有的(位于/data/data/
/files),其他程序無法訪問。除非在創(chuàng)建時指定了Context.MODE_WORLD_READABLE或者Context.MODE_WORLD_WRITEABLE,只有這樣其他程序才能正確訪問。
實習(xí)流程:
2月18——2月27日,老師對于ANDROID開發(fā)進行了詳細的講解,其內(nèi)容包括:ANDROID 的背景介紹,發(fā)展過程,自身的優(yōu)勢與不足.Android的控件、布局、Activity、Service等一系列基礎(chǔ)知識,對整個Android的開發(fā)有了大致的了解
2月28日——3月2日: 學(xué)生自己開發(fā)ANDROID 3GABS項目,老師答疑及驗收
實習(xí)心得:
時間過的飛快,半個月的實習(xí)就要結(jié)束了,在這次實習(xí)中我們不僅學(xué)習(xí)了相關(guān)的專業(yè)知識而且讓我對Android系統(tǒng)又有了一個更加深入的了解,它也是我們計算機專業(yè)的一個新的方向并且發(fā)展很迅速,為了今后的發(fā)展我們還需不斷努力學(xué)習(xí)!我國的信息產(chǎn)業(yè)還很落后,隨著社會的發(fā)展和國家的支持,手機上網(wǎng)是社會發(fā)展的趨勢,到時候手機上網(wǎng)將無處不在!之前我對Android系統(tǒng)的了解之停留在應(yīng)用的層次上,對于更深層次的了解是很少的,通過這次實習(xí),讓我對Android系統(tǒng)有了一個更深層次的了解,同時它頁使我意識到無論朝哪個方向發(fā)展,主要還是要扎實深刻地學(xué)習(xí),同時也得不斷努力探索!
IT業(yè)發(fā)展速度一直都是相當(dāng)驚人的,不想被社會淘汰,我們就得必須不斷地學(xué)習(xí),現(xiàn)在的社會不再是一勞永逸,其他行業(yè)也是如此,我們必須不斷地拿知識來武裝自己,不然被淘汰那是肯定的!現(xiàn)在就業(yè)難原因其實在于競爭的家具,為了在競爭中得到成功,我們必須時時刻刻學(xué)習(xí),還學(xué)到了很多做人做事的道理,不僅懂得了要想在計算機這一行立足必須具備扎實的技術(shù)理論知識,還必須學(xué)會與人溝通,合作的能力,同時更懂得了嘗試的重要性,很多事情不是聽說是困難的它就是困難的,只有親自去做親自去體會才知道,其實它并沒有那么困難,這就是實踐的重要性!無論做什么事情都必須要堅持,只有堅持下去,才會成功!事在人為,就怕不做!我們不能怕失敗,關(guān)鍵是要從失敗中總結(jié)經(jīng)驗,帶著勇氣,帶著自信,堅持不懈,踏踏實實。這一次的實習(xí)是短暫的,但我收獲良多?;仡櫼郧八哌^的路,太多的無奈和迷茫,這次實習(xí)就像是我人生道路上的航標(biāo),為我指明了前景的方向,是我對自己的前途充滿了信心,我不僅知道了在人生的岔道口更適合朝哪個方向前進!更知道了在今后的道路上怎么去武裝自己!
實習(xí)結(jié)果: