第一篇:個人事跡材料-安卓
個人事跡材料
我是經(jīng)濟(jì)管理系
11級酒店管理的方亮,自入團(tuán)以來積極參加團(tuán)組織的各類活動。努力完成團(tuán)組織交給的任務(wù),時時刻刻記住我應(yīng)該做什么,如何做好的思想理念。
我深刻認(rèn)識到:共青團(tuán)作為共產(chǎn)黨的后備主力軍,有著不可替代的作用。作為共青團(tuán)中的一員,我首先感到無比的自豪,更主要的是要嚴(yán)格要求自己,并且學(xué)習(xí)上爭高分,政治上要先進(jìn),活動中要積極。進(jìn)入大學(xué)以來,我時刻銘記自己是一名共青團(tuán)員,處處嚴(yán)格地要求自己。作為一名學(xué)生,我把學(xué)習(xí)當(dāng)作自己的第一任務(wù),從來不肯放松一絲一毫,在期末考試中各科都取得了優(yōu)異的成績。但成績不等于滿足,而是作為一種動力促使著我進(jìn)步,促使著我走向成熟,融入社會,肩負(fù)起歷史賦予我們的使命。
作為共青團(tuán)中的一員,我時刻不忘團(tuán)員的職責(zé),嚴(yán)格遵守團(tuán)員的守則,牢記團(tuán)員是黨的后備軍,應(yīng)該繼承黨的先進(jìn)性,應(yīng)該擁有高尚的人品和情操。我能積極參加團(tuán)委組織的各項活動,在活動中通過認(rèn)真學(xué)習(xí)和思考,不斷提高自己各方面的能力和素質(zhì),爭做社會主義事業(yè)的合格接班人。
我加入團(tuán)組織已有好幾年的時間了,我深深感受到了這個大家庭的溫暖。團(tuán)組織使我健康成長,使我正確認(rèn)識世界觀、人生觀、價值觀。作為共青團(tuán)員我們應(yīng)該堅持與時俱進(jìn)。下面是我在這一年來的基本情況匯報如下: 在思想上:
首先,端正思想,提高思想覺悟水平,樹立起作為共青團(tuán)員應(yīng)該起到帶頭和模范作用;
其次,積極參與學(xué)校組織的各項團(tuán)員活動,在活動中學(xué)習(xí)理論,在活動中實(shí)踐理論,這樣做到學(xué)以致用,也符合馬克思的理論與實(shí)踐相結(jié)合的原則;
再次,按時繳納團(tuán)費(fèi),不拖后腿,爭取為團(tuán)的事業(yè)貢獻(xiàn)自己的微薄之力; 此外,努力提高自身思想素質(zhì),弘揚(yáng)社會主義道德風(fēng)尚,嚴(yán)于律己,求實(shí)創(chuàng)造、與時俱進(jìn),將優(yōu)秀的中華民族傳統(tǒng)美德發(fā)揚(yáng)光大。認(rèn)真遵守學(xué)院各項規(guī)章制度,不參加非法組織。認(rèn)真學(xué)習(xí)《團(tuán)的章程》,自覺履行團(tuán)員的義務(wù),執(zhí)行團(tuán)的決議,遵守團(tuán)的紀(jì)律,完成團(tuán)組織交給的任務(wù),發(fā)揮團(tuán)員的模范作用也是一個團(tuán)員應(yīng)盡的責(zé)任。本人有良好道德修養(yǎng),并有堅定的政治方向,在入學(xué)之初的軍訓(xùn)中獲得“軍訓(xùn)標(biāo)兵”的榮譽(yù)稱號,為我大學(xué)三年奠定了堅實(shí)的基礎(chǔ),我絕對不會辜負(fù)黨對自己的期望,繼續(xù)努力爭取今年能被轉(zhuǎn)為正式黨員。在學(xué)習(xí)上:
我始終堅持一句格言“不放棄努力本是我的任務(wù),在現(xiàn)有的基礎(chǔ)上爭取再爭取更是我的職責(zé)”。從進(jìn)校以來學(xué)習(xí)一直未松懈,有科學(xué)的生涯規(guī)劃,有明確的學(xué)習(xí)目標(biāo),認(rèn)真鉆研專業(yè)知識,刻苦學(xué)習(xí),具備了較強(qiáng)的計算機(jī)應(yīng)用能力。樂于幫助其他同學(xué),取長補(bǔ)短,達(dá)到共同進(jìn)步的目的。上課時認(rèn)真聽講、做好筆記,積極思考并回答老師提出的問題,從而帶動同學(xué)們上課時與老師之間的互動,不僅自己收獲頗豐,整個班級的學(xué)習(xí)氣氛也大大提高;課后及時完成作業(yè),做到認(rèn)真復(fù)習(xí),預(yù)習(xí)一起抓,并經(jīng)常去圖書館看各類報刊雜志,不僅陶冶了自己的情操,也開闊了自己的視野。此外,我積極配合老師的工作,幫老師作項目,使自己的實(shí)際動手能力得到了很大的提高。在生活上:
首先,我積極與室友、同班同學(xué)及兄弟班級的同學(xué)搞好關(guān)系,由于平易近人待人友好,所以一直以來與人相處甚是融洽。我深刻意識到搞好同學(xué)、朋友之間的關(guān)系非常重要,這直接關(guān)系到我的大學(xué)生活能否過的充實(shí)。我覺得孤單的過完這大學(xué)生活,那我就是一個失敗的大學(xué)生了。我需要做很多事情去充實(shí)我這短暫的大學(xué)時光。而這就需要朋友的幫助來完成整個過程。所以無論在系里,還是在整個學(xué)院,我都結(jié)交了許多朋友。
其次,我崇尚質(zhì)樸的生活,并養(yǎng)成良好的生活習(xí)慣和正派的作風(fēng),合理利用自己的生活費(fèi),我深知金錢的來之不易,從不亂花一分錢。在不影響學(xué)習(xí)的前提下做兼職,寒暑假時我會做兼職,不但鍛煉了自己,也減輕了家里的負(fù)擔(dān)。
此外,我對時間的觀念性十分重視,合理安排好工作、學(xué)習(xí)、鍛煉身體及娛樂等的時間。
最重要的是,我相信:敢于拼搏刻苦耐勞將伴隨我迎接未來新挑戰(zhàn)!
知識無止境,學(xué)習(xí)更無止境。作為一名團(tuán)員,我要做的就是不斷的適應(yīng)時代的發(fā)展,跟上時代的步伐,不斷的去擴(kuò)充自身的知識儲備,以提高自身的修養(yǎng)。為了在不遠(yuǎn)的將來能得到黨的認(rèn)可,成為一名真正的中國共產(chǎn)黨員,也為了在大學(xué)畢業(yè)之后能和所有的有志之士一起工作、學(xué)習(xí),我將繼續(xù)積極參加團(tuán)支部組織的政治理論學(xué)習(xí),團(tuán)結(jié)同學(xué),互幫互助,努力學(xué)習(xí)課堂知識。
在個人成長的路上,我們不但要敢于創(chuàng)新,而且要在馬克思主義、毛澤東思想、鄧小平理論、三個代表重要思想中反思自己的言行舉止。作為團(tuán)員必須具有積極的心態(tài),樂觀的精神,和敢于向困難挑戰(zhàn)的精神,而且勝不驕,敗不餒,能發(fā)揚(yáng)團(tuán)結(jié)友愛,關(guān)心他人,具有團(tuán)隊精神和集體榮譽(yù)感?!拔鹨詯盒《鵀橹?,勿以善小而不為!”良好的道德習(xí)慣不是一朝一夕,而是長期的修養(yǎng)過程。從我做起,帶動別人。只有這樣才不會違背于作為新一代光榮的共青團(tuán)員的精神。
雖然通過團(tuán)組織的悉心培養(yǎng)和自己的努力取得了一點(diǎn)點(diǎn)成績,但是我認(rèn)為還是遠(yuǎn)遠(yuǎn)不夠的,雖然能以一個優(yōu)秀團(tuán)員的標(biāo)準(zhǔn)來嚴(yán)格要求自己,但是距離一個優(yōu)秀團(tuán)員的標(biāo)準(zhǔn)還有差距,所以在今后的工作中我們要實(shí)事求是,戒驕戒躁,努力克服自己的缺點(diǎn),始終保持團(tuán)組織的先鋒模范作用,腳踏實(shí)地、積極進(jìn)取、不斷創(chuàng)新、默默的奉獻(xiàn),力爭使自己在各項工作中取得新的成績,努力使自己成為共青團(tuán)組織的優(yōu)秀先鋒。
今后我會堅持勤奮努力、踏實(shí)工作的優(yōu)良作風(fēng),在工作上學(xué)骨干,在政治上求先進(jìn),在活動中求積極,認(rèn)真而努力地做好組織交給的每一件事,帶著激情和責(zé)任感對待自己的本職工作,不辜負(fù)團(tuán)組織和廣大師生對我的期望。
最后,我希望上級組織能考慮我的申請,同時我也會繼續(xù)努力,爭取更好的發(fā)展機(jī)會。
經(jīng)濟(jì)管理系11級酒店管理
方亮 2012年5月9日
第二篇:優(yōu)秀團(tuán)干個人事跡-安卓
個人事跡材料
我是經(jīng)濟(jì)管理系11級酒店管理專業(yè)的安卓。執(zhí)筆書寫人生路,且把書香鑄青春。追逐夢想路,我們一路奮斗,一路拼搏。轉(zhuǎn)眼間,大學(xué)的第一年即將結(jié)束,我也漸漸褪去初來時略顯青澀的外衣,洋溢出屬于自己這個年齡的成熟與魅力。
一年前,我還是一名在題海中奮斗的高中學(xué)生,懷著對未來滿滿的憧憬與希望,努力地追逐著自己最初的夢想。我就讀于河北省平山縣職業(yè)教育中心。期間,我擔(dān)任過學(xué)習(xí)委員,體育委員等職務(wù),管理班級的紀(jì)律,組織班級體的各類文化活動,同時還是宿舍的舍長,因?yàn)檩^好的組織能力,工作勤懇認(rèn)真,我深受老師和同學(xué)的信任。我也參加了很多學(xué)校舉辦的競賽,并獲得了令人滿意的成績。中學(xué)時代,我曾獲得?!叭脤W(xué)生”、“優(yōu)秀學(xué)生”、“學(xué)習(xí)積極分子”等光榮稱號。
進(jìn)入大學(xué),我依舊堅持為同學(xué)服務(wù),鍛煉自己的想法競選班級干部。在同學(xué)的支持和老師的信任下,我擔(dān)任了班級團(tuán)支書的職務(wù)。在擔(dān)任團(tuán)支書將近一年的時間里,我一直兢兢業(yè)業(yè),誠誠懇懇的工作,付出許多,也收獲許多。通過近一年的團(tuán)支書的工作,我收獲了很多寶貴的經(jīng)驗(yàn),這使我的工作能力得到了很大的提高。我一直努力做好班級文化建設(shè),為班級同學(xué)營造一個良好的學(xué)習(xí)氛圍,增強(qiáng)班級成員的集體榮譽(yù)感。在此期間,班級也得到了較好的發(fā)展。通過認(rèn)真細(xì)致的工作,我們班獲得“班級文化一等獎”等榮譽(yù)。這些對于我工作的肯定進(jìn)一步堅定了我努力做好工作的信念。一個沒有領(lǐng)導(dǎo)者的集體是散亂的,同樣,一個好的決策會增強(qiáng)集體的凝聚力,從而有更強(qiáng)的創(chuàng)造力。對以后的工作,我會在之前的基礎(chǔ)上加強(qiáng)文化建設(shè),找出不足并努力改進(jìn),將我們的班級發(fā)展成為一個在學(xué)院都出類拔萃的優(yōu)秀班集體。
懷著夢想,我前行在大學(xué)的大道上,書寫著自己三年的書香生涯,舒展著人生的美麗畫卷。執(zhí)筆書寫人生路,且把書香鑄青春。時間會在指尖慢慢流走,但我會把握好人生的每一分鐘,我相信,做好自己,我能成功!我是一個樂觀積極、奮力拼搏的男孩,骨子里有著一股永不服輸?shù)膭艃海趯W(xué)習(xí)上我不甘落于人后,一直以認(rèn)真嚴(yán)謹(jǐn)?shù)膽B(tài)度來對待每一門功課。不放棄是我的任務(wù),在現(xiàn)有的基礎(chǔ)上爭取更進(jìn)步是我的職責(zé)。大學(xué)時代是學(xué)習(xí)現(xiàn)代科學(xué)知識的黃金時段,我們應(yīng)該努力抓住這個機(jī)會,用知識武裝我們的頭腦。在校就讀的時間里,我會一直嚴(yán)格要求自己,以身作則,為班級同學(xué)做好帶頭榜樣作用。我合理安排調(diào)整自己的作息時間,分配學(xué)習(xí)、工作和休閑娛樂的時間,養(yǎng)成自己良好的生活習(xí)慣。我上課認(rèn)真聽講,做好課堂筆記,積極思考老師提出的問題,課后認(rèn)真獨(dú)立完成老師布置的作業(yè),不懂的問題及時向老師或同學(xué)請教,做好預(yù)復(fù)習(xí)工作,把所學(xué)知識學(xué)以致用,真正存進(jìn)自己的腦海中。大一一學(xué)年,我獲得了系舉辦的辯論賽的“最佳辯手”等榮譽(yù)。另外,我還利用空余時間閱讀了一些課外書籍,借此拓寬自己的知識面,儲備知識,增長見識,陶冶自己的情操。
身為一名共青團(tuán)員,自入團(tuán)以來就積極參加團(tuán)組織的各類活動。進(jìn)入大學(xué),我更是努力提高自身的思想心理素質(zhì),自覺履行團(tuán)員義務(wù),也向黨組織提交了入黨申請。作為團(tuán)支書,我以身作則,積極參加了系、院組織的各項活動,在活動中積累經(jīng)驗(yàn),實(shí)踐理論。在班內(nèi),我努力盡職地向同學(xué)們傳達(dá)上級的各項通知和精神要領(lǐng),組織策劃多次主題團(tuán)日活動,弘揚(yáng)社會主義道德風(fēng)尚,嚴(yán)于律己,寬以待人,努力向黨組織靠攏,爭取早日入黨,成為一名光榮的共產(chǎn)黨員。
我活潑開朗、待人隨和的個性讓我與同學(xué)之間形成較好的朋友關(guān)系。我充分發(fā)揮自己較強(qiáng)的人際交往能力和語言表達(dá)能力。積極與舍友和周圍宿舍的同學(xué)交流,處理好彼此之間的關(guān)系,并且協(xié)調(diào)好班級成員之間的關(guān)系和各項事宜。積極參加學(xué)院各類辯論比賽活動,并取得了優(yōu)秀的成績。參加各類集體活動,也開闊了我的視野,鍛煉了我的溝通能力,團(tuán)隊協(xié)作能力,使我更自信更開朗,成熟穩(wěn)重。
現(xiàn)在,大學(xué)生活將要過半,但青春依舊閃光,因?yàn)橛袎粝氲某岚?,所以我們勇敢地翱翔天空。前方,道路依然漫長,在今后的學(xué)習(xí)生活中,我會更加努力,腳踏實(shí)地,一步一步走好人生的每一步,以更昂揚(yáng)的姿態(tài)迎接每一次挑戰(zhàn),抓住每一次機(jī)遇,描繪屬于自己的絢麗藍(lán)圖!最后,我希望團(tuán)組織能考慮我的申請,我也會以實(shí)際行動來證明我自己,不辜負(fù)團(tuán)組織和老師同學(xué)對我的期望。
經(jīng)濟(jì)管理系11級酒店管理
安卓 2012年5月9日
第三篇:優(yōu)秀團(tuán)干個人事跡簡介-安卓
個人事跡材料
我是11級酒店班的王倩。2011年進(jìn)入大學(xué)以來在班里擔(dān)任組織委員一職,經(jīng)過長期的觀察與考核,并于2012年4月發(fā)展為積極分子和志愿者。我以小草精神甘當(dāng)配角,做了一名團(tuán)員、班干部應(yīng)做的工作。
通過近幾年來對團(tuán)章,團(tuán)情的了解,我深深地明白了中國共產(chǎn)主義青年團(tuán)是青年的先進(jìn)組織,想要成為一名優(yōu)秀的共青團(tuán)員,必須嚴(yán)格執(zhí)行團(tuán)員的章程和組織的原則,為同學(xué)們帶好頭,處處領(lǐng)頭,爭當(dāng)團(tuán)員模范,也一定要嚴(yán)格要求自己,無論是學(xué)習(xí)還是生活,都要有一顆服務(wù)的心。
在擔(dān)任組織委員期間,及時根據(jù)團(tuán)委下達(dá)的指示,給同學(xué)們普及團(tuán)情知識,加強(qiáng)思想建設(shè),并取得良好的效果,幫助大家深刻了解一名大學(xué)生應(yīng)當(dāng)有的思想覺悟和意識,并且同時完善自己的思想,朝著一名真正的優(yōu)秀的團(tuán)員邁進(jìn)。
大學(xué)生活快一年了,在這將近一年的時間里我成熟了許多。作為共青團(tuán)員的一員,我一直以一個合格團(tuán)員的標(biāo)準(zhǔn)嚴(yán)格要求自己,完成自己份內(nèi)的工作,配合老師的工作,做導(dǎo)員與隊長的助手,同學(xué)們的榜樣。記得有位老師說過這樣的一句話:“不要問團(tuán)委能給你什么,要問你自己能給這留下什么”。
在長期的工作中我深刻認(rèn)識到:中國共青團(tuán)是中國共產(chǎn)黨的后備軍。開展增強(qiáng)共青團(tuán)員意識主題教育,是從源頭上切實(shí)加強(qiáng)黨的先進(jìn)性建設(shè),鞏固黨執(zhí)政的青年群眾基礎(chǔ)的重要舉措,是堅持黨建帶團(tuán)建、團(tuán)建促黨建,增強(qiáng)共青團(tuán)的吸引力、凝聚力、創(chuàng)造力和戰(zhàn)斗力的實(shí)際行動。作為共青團(tuán)中的一名,在感到無比自豪的同時,更主要的是要嚴(yán)格要求自己,并且在學(xué)習(xí)上爭高分、技能求上提升、政治上要先進(jìn)、活動中要積極。進(jìn)入大學(xué)以來,我時刻銘記自己是一個光榮的共青團(tuán)員,處處嚴(yán)格地要求自己。作為一個學(xué)生,我把學(xué)習(xí)當(dāng)作是自己的第一任務(wù),但成績不等于滿足,而是作為一種動力促使著我進(jìn)步,促使著我走向成熟,融入社會,肩負(fù)起歷史賦予團(tuán)員的使命。在思想上:
平時能認(rèn)真學(xué)習(xí)馬列主義、毛澤東思想、鄧小平理論和“三個代表”重要思想,并且努力踐行“三個代表”,不斷提高自身政治修養(yǎng)。我思想活躍,常常能提出一些好的意見和建議。作為班級組織委員,我認(rèn)真組織好班上的各項團(tuán)活動,而且能積極調(diào)動大家的思想,引導(dǎo)非團(tuán)員積極向團(tuán)組織靠攏,做好優(yōu)秀團(tuán)員向黨組織推薦工作。入校后向黨組織遞交了入黨申請書,處處以黨員的標(biāo)準(zhǔn)來嚴(yán)格要求自己。首先,端正思想,提高思想覺悟水平,樹立起作為共青團(tuán)員應(yīng)該起到帶頭和模范作用;其次,積極參與學(xué)校組織的各項活動,在活動中學(xué)習(xí)理論,在活動中實(shí)踐理論,這樣做到學(xué)以致用,也符合馬克思的理論與實(shí)踐相結(jié)合的原則。在學(xué)習(xí)上:
我深刻的認(rèn)識到光憑理論是不夠的,還必須懂得如何學(xué)習(xí),怎樣思考,做到學(xué)與思相結(jié)合,學(xué)與問結(jié)合,學(xué)與行相結(jié)合。只有同時掌握理論知識和實(shí)際操作知識,才能受到社會的歡迎;只有掌握學(xué)過的書本理論知識和實(shí)踐操作技能,才能找到好的工作,缺乏知識和技能的靈活運(yùn)用能力,同樣不能滿足現(xiàn)代社會對人才的要求。因此,理論和實(shí)踐是不可分割的,要時刻以實(shí)際運(yùn)用作為最終的學(xué)習(xí)目標(biāo),在實(shí)踐中學(xué)習(xí)。始終保持高漲的學(xué)習(xí)熱情和旺盛的求知欲望,在學(xué)習(xí)中實(shí)踐,在實(shí)踐中學(xué)習(xí)。我有科學(xué)的生涯規(guī)劃,有明確的學(xué)習(xí)目標(biāo),認(rèn)真鉆研專業(yè)知識,刻苦學(xué)習(xí),課后及時完成作業(yè),做到認(rèn)真復(fù)習(xí),預(yù)習(xí)一起抓,并經(jīng)常去圖書館看各類報刊雜志,不僅陶冶了自己的情操,也開闊了自己的視野。在生活上:
作為學(xué)生干部我積極幫助有困難的同學(xué),所在寢室關(guān)系融洽,互相關(guān)心,共同努力并結(jié)交了許多朋友。
工作中我一直盡心盡責(zé),做事追求完美。回想走過的這些日子,我深刻的知道優(yōu)秀團(tuán)干的稱號意味著什么,它意味著比別人多的奉獻(xiàn),比別人多的付出,比別人多的努力。我認(rèn)真的做好每一步,并且作為一名入黨積極分子,我知道中國共青團(tuán)是一個先進(jìn)青年的組織,是黨的好幫手,是一個人才輩出的組織,這才使一批又一批的人才涌現(xiàn)。
對于過去的將近一年,感覺有所收獲,又有所失落,總結(jié)一下,仍覺的自己存在很多不足。在以后的工作中,我會以更加向上的姿態(tài)迎接生命中一次又一次的磨練與考驗(yàn),以更加飽滿的熱情投入到以后的學(xué)習(xí)和生活中去,我相信,道路是曲折的,但前途是美好的,所以我會堅持著走的更好。
經(jīng)濟(jì)管理系11級酒店管理 王倩 2012年5月9日
第四篇:安卓學(xué)習(xí)心得
Android學(xué)習(xí)心得
-----093380117
計算機(jī)應(yīng)用(1)
張峰
1.關(guān)于Activity
1.在一個Activity中使用多個View
如果把Activity看作MVC中的Control?它負(fù)責(zé)管理UI和接受事件(包括用戶的輸入),雖然說一個Activity通常對應(yīng)一個屏幕,但事實(shí)上,我們是可以只用一個Activity管理多個不同的View來實(shí)現(xiàn)簡單的邏輯。首先,我們增加一個新的資源描述layout/second.xml。
除了一個“Hello中國”以外,增加一個按鈕可以返回前一個界面。然后,在代碼中我們要為helloTwo增加兩個方法,setViewOneCommand和setViewTwoCommand,分別處理一下在不同界面時,從資源里加載組件并為組件綁定一個事件處理器最后,我們需要在onCreate的時候,也就是啟動后的main界面上設(shè)置一下按鈕事件處理器。2.還是回到正道上,多個Activity之間的跳轉(zhuǎn)
Android中提供一個叫Intent的類來實(shí)現(xiàn)屏幕之間的跳轉(zhuǎn),按文檔的說法,似乎他們也建議采用這種方法,Intent的用法比較復(fù)雜,現(xiàn)在我先看看它最簡單的用法。
這里的跳轉(zhuǎn)功能用Intent來操作,它的最簡單用法就是用函數(shù)setClass()設(shè)置跳轉(zhuǎn)前后兩個Activity類的實(shí)例,然后調(diào)用Activity自己的startActivity(intent)即可。最后一句finish()表示將當(dāng)前Activity關(guān)掉(如果不關(guān)掉會如何?你可以自己試一下看效果,事實(shí)上有時我們是不需要關(guān)掉當(dāng)前Activity的)。
然后,我們同樣弄一個Activity類HelloThreeB,代碼與前面的差不多,只是將setClass的兩個參數(shù)反一下,這樣就可以簡單地實(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)的前后兩個類實(shí)例。4.附加數(shù)據(jù)(extras),在ContentURI之外還可以附加一些信息,它是Bundle類型的對象。
其實(shí),如果是在一個應(yīng)用內(nèi)部,這種隱性的intent實(shí)在有點(diǎn)別扭,個人覺得,這種松藕合的實(shí)現(xiàn)方法,只適用于那些較大的系統(tǒng)或者多個不同的應(yīng)用之間的調(diào)用,可手機(jī)上又有什么“較大”的系統(tǒng)呢?無非是可以與不同來源的多個應(yīng)用之間方便地互操作而已,那么會是什么樣的場景呢?比如,給QQ好友發(fā)送gmail郵件,用GoogleMap查找QQ好友所在的位置?看上去挺不錯的。
關(guān)于這個ContentProvider,其實(shí)還有話說,它主要是的那些看似數(shù)據(jù)庫操作的方法我們都沒真正去實(shí)現(xiàn)呢。不過今天就到這里了,等下回再去研究吧。
3.關(guān)于ListActivity
準(zhǔn)備一個List對象并借助Adapter就可以構(gòu)造出一個列表。重載onListItemClick方法可以響應(yīng)選擇事件,利用第一個參數(shù)可以訪問到這個ListView實(shí)例以得到選中的條目信息。這里有一點(diǎn)要說明的,就是如果更簡單的話,其實(shí)連那個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,還是做個例子來實(shí)驗(yàn)一下吧。
然后,在HelloTwoB中的onCreate函數(shù)中,修改代碼,有幾個不同:items的元素是HashMap實(shí)例,這是一點(diǎn)變化,然后構(gòu)造函數(shù)除了要求items以外,還要求提供一個string[]來說明用hash表中的哪個字段顯示在列表中,而后是一個資源ID的數(shù)組。
因?yàn)閱渭兊腃ursorAdapter是抽象類,所以我用的是它的子類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接口的實(shí)現(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就帶進(jìn)入的。
2.Service的啟動由Context.startService開始,其實(shí)Activity或者Service都是Context的派生類。結(jié)束于Context.stopService()或者它自己的stopSelf()。
3.Service還有一個與Activity不一樣的是它可以由另一個Context去綁定一個已存在的Service。就是這個方法Context.bindService(),被綁定的Service要求是已經(jīng)onCreate了但可以沒有onStart。在Service類中有個抽象方法getBinder()可以得到這個IBinder對象。關(guān)于這方面的細(xì)節(jié),以后再看,這里只做個記錄罷。
4.與Service有關(guān)的還有一個安全的問題,可以在AndroidManifest.xml中用
6.GridView與ImageView
簡單一點(diǎn)吧,就瞧瞧那個Grid的效果,Android提供了一個GridView,不過從APIDemo中看來,它似乎與PC上的GRID差別還是挺大的,更像那個IconView的感覺。不知道Android中如何實(shí)現(xiàn)表格界面?雖然在移動終端上,表格一般不會有誰使用,大家似乎更傾向于使用ListView,而Android對于ListView則有更簡單的實(shí)現(xiàn)ListActivity。
很簡單,只要重載幾個方法就可以了,關(guān)鍵是那個getView方法,它負(fù)責(zé)構(gòu)建出每個單元格中的對象實(shí)例。這里我們構(gòu)造的是一個ImageView實(shí)例。
然后就是同樣的將這個Adapter賦給GridView即可,大家可以看看效果,注意在做這個例子前,先放幾個小圖片到res/drawable目錄下,buildproject一下就可以得到那個R.drawable.a了(這里的a是圖像文件名,如a.png)。
在getView方法中我們使用了ImageView類,這又是一個widget。除了上面用到的幾個方法以外,還有以下幾個方法值得注意: 與圖像來源有關(guān)的方法,我們只用了資源文件的方式。
還是習(xí)慣性跑題了,其實(shí),我是想通過我對這個類的無數(shù)次Debugger跟進(jìn),說說它的多線程異步處理的解決策略的。他的基本策略如下: 1.當(dāng)你實(shí)例化一個AsyncQueryHandler類時(包括其子類...),它會單件構(gòu)造一個線程(后面會詳述...),這個線程里面會構(gòu)建一個消息循環(huán)。
2.獲得該消息循環(huán)的指針,用它做參數(shù)實(shí)例化另一個Handler類,該類為內(nèi)部類。至此,就有了兩個線程,各自有一個Handler來處理消息。3.當(dāng)調(diào)用onXXX的時候,在XXX函數(shù)內(nèi)部會將請求封裝成一個內(nèi)部的參數(shù)類,將其作為消息的參數(shù),將此消息發(fā)送至另一個線程。4.在該線程的Handler中,接受該消息,并分析傳入的參數(shù),用初始化時傳入的ContentResolver進(jìn)行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的實(shí)例化會導(dǎo)致創(chuàng)建一個線程,從此該線程成為不死老處男,所有的ContentResolver相關(guān)的工作,都由該線程統(tǒng)一完成。個人覺得這種解決方式很贊。本來這個線程的生命周期就很難估量,并且,當(dāng)你有一個ContentProvider的請求的時候,判斷你會做更多的類似操作并不過分。就算錯了,花費(fèi)的也只是一個不死的線程(與進(jìn)程同生死共存亡...),換來的卻是簡單的生命周期管理和無數(shù)次線程生死開銷的節(jié)約。同時另外一個很重要的問題,他并會涉及到單件中數(shù)據(jù)同步的問題,每個類都有各自的Handler類,彼此互不干擾,分發(fā)可以分別進(jìn)行。當(dāng)多個數(shù)據(jù)請求的時候,在同一個ContentResolver上進(jìn)行的可能微乎其微,這就避免了堵塞??偠灾?,這套解決辦法和Android的整體設(shè)計算是天作之合了。
所以建議,如果你有什么非ContentProvider操作,卻需要異步多線程執(zhí)行的話,模擬一套,是個不錯的策略,當(dāng)然,具體情況具體分析,生搬硬套是學(xué)不好馬列主義的。
7.顯示控件使用
Android的界面顯示同樣也是基于控件的。通常是用View(包括ViewGroup)控件配上XML的樣式來做的。具體細(xì)節(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是一個抽象類,主要的實(shí)現(xiàn)類包括SimpleAdapter和 SimpleCursorAdapter。前者是綁定一個靜態(tài)的Array,后者是綁定一個動態(tài)的Cursor。Cursor前面說過,是一個指向數(shù)據(jù)源的隨機(jī)迭代器,將View綁定到Cursor通常要設(shè)置這樣幾個參數(shù)。一個是每一行的樣式,稱作Row Layout,其實(shí)就是一個普通的Layout的XML文件。還有就是一個列和現(xiàn)實(shí)控件的對應(yīng)關(guān)系。那個控件顯示哪個列的值,這是需要配置的。為了定制一個良好的數(shù)據(jù)顯示控件,最簡單你可以定制很PP的Row Layout,復(fù)雜一點(diǎn)就是可以重載綁定控件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的事件??梢詽M足你比較基礎(chǔ)的需求。如果你覺得只有一個ListView的界面太突兀,你可以為這個ListActivity指定一個Layout,需要注意的是,你需要提供一個id為@android:id/list的ListView控件,避免Activity在內(nèi)部偷偷尋找該控件的時候失敗。
除了這些要求,做好UI還有注意易用性和效率??旖萱I是一個比較不錯的選擇,在 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é)點(diǎn)使用、吃掉或者在出口死掉。
相比之下,我個人覺得基于Intent的Android核心消息傳遞機(jī)制是有所不同的。它應(yīng)該會有一個全局性的注冊中心,這個注冊中心是隱性的,整個Android系統(tǒng)中就那么一個。所有的消息接收者,都被隱形的注冊到這個中心。包括Activity,Service和IntentReceiver。其實(shí)說隱形注冊是不確切的,所有注冊都還是我們手動告訴注冊中心的,只是與傳統(tǒng)的方式不一樣,我們通常不是通過代碼,而是通過配置文件來做。在應(yīng)用的Manifest中,我們會為一些Activity或Service添加上Intent-filter,或在配置文件中添加
當(dāng)程序有一個消息希望發(fā)出去的時候,它需要將消息封裝成一個Intent,并發(fā)送。這時候,應(yīng)該是有一個統(tǒng)一的中心(恩,有可能Android底層實(shí)現(xiàn)的時候不是,但簡單這樣看是沒問題的...)接受到這個消息,并對它進(jìn)行解析、判定消息類型(這個步驟降低了耦合...),然后檢查注冊了相匹配的filter或receiver,并創(chuàng)建或喚醒接收者,將消息分發(fā)給它。這樣做有很多好處。雖然這種傳遞有的時候不如點(diǎn)對點(diǎn)的傳遞快(這有些需要速度的地方,我們看到Android會通過直接通信來做),但有時候又因?yàn)樗唤?jīng)過一跳(姑且這么叫吧...),比復(fù)雜的流動又要更快。更重要的是,它耦合性低,在手機(jī)平臺這種程序組件多變的條件下使用十分適合。并且它可以很容易實(shí)現(xiàn)消息的精確或模糊匹配,彈性很大。(我個人曾想在開發(fā)一個C++二次平臺的時候引入這樣的機(jī)制,但在C++中,建立一套完整的數(shù)據(jù)marshal機(jī)制不容易,相比之下,用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)用的入口點(diǎn)),當(dāng)然你也可以用于你自己的應(yīng)用之間的通信(同樣當(dāng)然,也可以自定義...)。強(qiáng)烈建議,在自己程序接收或發(fā)出一個系統(tǒng)action的時候,要名副其實(shí)。比如你響應(yīng)一個view動作,做的確實(shí)edit的勾當(dāng),你發(fā)送一個pick消息,其實(shí)你想讓別人做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是點(diǎn)對點(diǎn)的指示,一旦指明,其他信息都被忽略。Intent中還可以添加key/value的數(shù)據(jù),發(fā)送方和接收方需要保持統(tǒng)一的key信息和value類型信息,這種數(shù)據(jù)的marshal在java里做,是不費(fèi)什么力氣的。
Android的Intent發(fā)送,可以分成單播和廣播兩種。廣播的接收者是所有注冊了的符合條件的IntentReceiver。在單播的情況下,即使有很多符合條件的接收者,也只要有一個出來處理這個消息就好(恩,個人看法,沒找到確切條款或抉擇的算法,本來想實(shí)驗(yàn)一下,沒來得及...),這樣的情況很容易理解,當(dāng)你需要修改某個數(shù)據(jù)的時候,你肯定不會希望有十個編輯器輪流讓你來處理。當(dāng)廣播不是這樣,一個receiver沒有辦法阻止其他receiver進(jìn)行對廣播事件的處理。這種情況也很容易理解,比如時鐘改變了,鬧鐘、備忘錄等很多程序都需要分別進(jìn)行處理。在自己的程序的使用中,應(yīng)該分清楚區(qū)別,合理的使用。
9.ContentProvider數(shù)據(jù)模型
數(shù)據(jù)庫操作
從我目前掌握的知識來看,SQLite比較輕量(沒有存儲過程之類的繁雜手段),用起來也比較簡單。實(shí)例化一個SQLiteDatabase類對象,通過它的APIs可以搞定大部分的操作。從sample中看,Android中對db的使用有一種比較簡單的模式,即派生一個 ContentProviderDatabaseHelper類來進(jìn)行SQLiteDatabase對象實(shí)例的獲取工作?;旧?,ContentProviderDatabaseHelper類扮演了一個singleton的角色,提供單一的實(shí)例化入口點(diǎn),并屏蔽了數(shù)據(jù)庫創(chuàng)建、打開升級等細(xì)節(jié)。在ContentProvider中只需要調(diào)用ContentProviderDatabaseHelper的openDatabase方法獲取SQLiteDatabase的實(shí)例就好,而不需要進(jìn)行數(shù)據(jù)庫狀態(tài)的判斷。URI 像進(jìn)行數(shù)據(jù)庫操作需要用SQL一樣,對ContentProivder進(jìn)行增刪改查等操作都是通過一種特定模式的URI來進(jìn)行的(ig:content: //provider/item/id),URI的能力與URL類似,具體細(xì)節(jié)可以查看SDK。建立自己的ContentProvider,只需要派生 ContentProivder類并實(shí)現(xiàn)insert, delete, update等抽象函數(shù)即可。在這些接口中比較特殊的是getType(uri)。根據(jù)傳入的uri,該方法按照MIME格式返回一個字符串(==!沒聽過的詭異格式...)唯一標(biāo)識該uri的類型。所謂uri的類型,就是描述這個uri所進(jìn)行的操作的種類,比如content://xx/a與 content://xx/a/1不是一個類型(前者是多值操作,后者是單值),但content://xx/a/1和content://xx/a/2 就會是一個類型(只是id號不同而已)。
在ContentProvider通常都會實(shí)例化一個ContentURIPraser來輔助解析和操作傳入的URI。你需要事先(在static域內(nèi))為該ContentURIPraser建立一個uri的語法樹,之后就可以簡單調(diào)用 ContentURIPraser類的相關(guān)方法進(jìn)行uri類型判斷(match方法),獲取加載在uri中的參數(shù)等操作。但我看來,這只是在使用上簡化了相關(guān)操作(不然就需要自己做人肉解析了...),但并沒有改變類型判定的模式。你依然需要用switch...case...對uri的類型進(jìn)行判斷,并進(jìn)行相關(guān)后續(xù)的操作。從模式來看,這樣無疑是具有強(qiáng)烈的壞味道,類似的switch...case...代碼要出現(xiàn)N此,每次一個 ContentProvider做uri類型的增減都會需要遍歷修改每一個switch...case...,當(dāng)然,如果你使用模式(策略模式...)進(jìn)行改造對手機(jī)程序來說無疑是崩潰似的(類型膨脹,效率降低...),所以,只能是忍一忍了(恩,還好不會擴(kuò)散到別的類中,維護(hù)性上不會有殺人性的麻煩...)。增刪改查
ContentProvider 和所有數(shù)據(jù)源一樣,向外提供增刪改查操作接口,這些都是基于uri的指令。進(jìn)行insert操作的時候,你需要傳入一個uri和 ContentValues。uri的作用基本就限于指明增減條目的類型(從數(shù)據(jù)庫層面來看就是table名),ContentValues是一個 key/value表的封裝,提供方便的API進(jìn)行插入數(shù)據(jù)類型和數(shù)據(jù)值的設(shè)置和獲取。在數(shù)據(jù)庫層面上來看,這應(yīng)該是column name與value的對應(yīng)。但為了屏蔽ContentProvider用戶涉及到具體數(shù)據(jù)庫的細(xì)節(jié),在Android的示例中,用了一個小小的模式。它為每一個表建一個基于BaseColumn類的派生類(其實(shí)完全可以不派生自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)我傻了,因?yàn)镃ontentProvider不一定需要使用數(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),在實(shí)際中該如何用,恩,我也不知道。幸運(yùn)的是,我看了下上層對 ContentProvider的刪除操作,其實(shí)都不會直接進(jìn)行,而是通過調(diào)用Cursor的delete方法進(jìn)行,在這前提下,我想Cursor會處理好這些東西吧。
最后一個操作是查詢操作,可以想見,查詢的參數(shù)是最多的,包括uri和一組條件參數(shù)。條件參數(shù)類型和標(biāo)準(zhǔn)的sql類似,包括 sort, projection 之類的。從這些參數(shù)到sql語句的生成,可以尋求QueryBuilder類的幫助,它提供了一組操作接口,簡化了參數(shù)到sql的生成工作,哪怕你不懂 sql都完全沒有問題(這話說的我自己都覺得有點(diǎn)懸...)。查詢返回一個Cursor。Cursor是一個支持隨機(jī)讀寫的指針,不僅如此,它還提供了方便的刪除和修改的API,是上層對ContentProvider進(jìn)行操作一個重要對象,需要仔細(xì)掌握(Cursor還可以綁定到view上,直接送顯,并與用戶進(jìn)行交互,真是程序越往上,封裝越好,工作越機(jī)械沒有復(fù)雜性了...)。數(shù)據(jù)模型
在與界面打交道的Cursor、ContentResolver等數(shù)據(jù)操作層中,大量采用觀察者模式建立數(shù)據(jù)層與顯示層的聯(lián)系。一個顯示層的視圖,可以做成某一種觀察者注冊到Cursor或ContentResolver等數(shù)據(jù)中間層中,在實(shí)現(xiàn)底層ContentProvider中,我們需要特別注意在對數(shù)據(jù)進(jìn)行修改操作(包括增刪改...)后,調(diào)用相應(yīng)類型的notify函數(shù),幫助表層對象進(jìn)行刷新(還有一種刷新方式是從一個view發(fā)起的)??梢钥吹?Android的整體數(shù)據(jù)顯示框架有點(diǎn)像MVC的方式。Cursor、ContentResolver相當(dāng)于控制層,數(shù)據(jù)層和顯示層的交互通過控制層來掌管,而且控制層很穩(wěn)定不需要特別定制,通常工作只在定制數(shù)據(jù)層和顯示層空間,還是比較方便和清晰的。
10.學(xué)習(xí)感想
通過這學(xué)期對安卓的學(xué)習(xí),大概了解了以上一些知識,對安卓有了初步的了解,這幾個月給我的東西我想用有形的和無形的兩部分概敘,形的當(dāng)然就是技術(shù)水平的長進(jìn),雖然其中肯定有很多的不足,相信慢慢會體會到。
第五篇:如何學(xué)習(xí)安卓
如何學(xué)習(xí)安卓
想學(xué)編程開發(fā),那要先會一門編程語言,現(xiàn)在可以試著去學(xué)學(xué)C語言,雖然這個安卓沾不上邊,但是,C語言的編程思想還是很重要的,學(xué)完了C語言之后,他的語法基本上和所有的編程語言都很相像,能影響你的思維,幫助你理解其他的編程語言的。之后呢,在好好看看《數(shù)據(jù)結(jié)構(gòu)》,這很重要。然后再去學(xué)學(xué)Java語言,因?yàn)锳ndroid的應(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。
加油!