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

安卓智能機數據恢復推薦

時間:2019-05-13 00:55:00下載本文作者:會員上傳
簡介:寫寫幫文庫小編為你整理了多篇相關的《安卓智能機數據恢復推薦》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《安卓智能機數據恢復推薦》。

第一篇:安卓智能機數據恢復推薦

現在大家用安卓手機成了大勢。價格相對低廉,操作方便,性價比高的安卓手機是很多智能機用戶的首選。然而,再好用的手機也會出現小毛病。最近老是聽周圍的朋友們抱怨好端端的手機里的照片等文件會丟失。

現在手機的重要性不需要我多說,大家都明白。買了手機之后,建議定期給你的手機進行數據備份,安卓手機的手機助手是很多的,而且手機助手都有數據備份的功能。經常備份可以保證數據的安全性,大家一定要養成這個好習慣。

但是,數據備份并不能完全解決數據丟失的問題。如果你遇到數據丟失的問題,可以試一試現在很流行的赤兔手機數據恢復軟件。就拿我個人使用的赤兔數據恢復來說吧。赤兔是一個免費的的文件恢復工具,你可以使用它來恢復那些被誤刪除的的文件,能直接恢復硬盤、閃盤、存儲卡(如 SD 卡,MMC 卡等等)中的文件,只要沒有被重復寫入數據,(重復寫入數據后是沒有辦法恢復的無論你使用什么工具)赤兔對于格式化或是刪除得文件均可直接恢復,支持 FAT12,FAT16,FAT32,NTFS 文件系統。赤兔搜索被刪除文件的速度很快,選擇好要掃描的驅動器后點擊掃描按鈕即可。迅龍可以簡單方便的恢復你寶貴的資料,有赤兔在手你一切都不用怕,隨便你怎么誤刪除文件。當然啦,最好的辦法還是不要丟失數據!

總的來說這款手機赤兔數據恢復軟件對于word辦公、文件圖片文件可以恢復前預覽,非常實用,有必要的話你可以在網上下載這個軟件試試,總體而言還是在同類軟件中性價比是比較不錯的。最后友情提醒:保護好自己的數據也是人人有責喲!

第二篇:安卓智能機考核題目

齊盛科技銷售人員題庫

修訂中

一、問答題

1、問:安卓操作系統共有多少個版本?每個版本名稱是?

答:1.0 1.5 1.6 2.0 2.1 2.2 2.3 3.0 4.0

2、問:安卓和IOS的區別?

答:安卓為開放式操作系統,IOS是封閉的,不能進行UI修改

3、問:目前分辨率最高的手機是?分辨率是多少?

答:IPHONE 460*960

4、問:請簡單說明GPS和A-GPS 答:GPS是免費使用.不需要進行網絡連接.定位精度稍差.A-GPS是網絡定位,需要花費流量.5、問:天朝移動深度定制版安卓系統叫做什么?

答: O PHONE

6、問:手機刷機是否對手機有影響?請說明原因。

答:沒有,手機刷機只是軟件上的更新,對硬件沒有影響.除非刷機版本較高,才出現運行卡的情況

7、問:什么是RAM?什么是ROM? 答:RAM是運行內存,ROM是機身內存

8、問:安卓系統每次升級必須升級的3個功能是

答:運行速度,省電

9、問:安卓2.1升級2.2做了哪一項重要的改進

答:將軟件存儲從手機存儲到SD卡上

10、問:寫出彩信和CMNET的上網設置

答:連接名稱:CMNET 數據承載方式:分組數據

接入點:CMNET 用戶名:無

密碼:無

彩信:連接名稱:移動彩信 接入點名稱:CMWAP 用戶名:無

密碼:無

主頁:mmsc.monternet.com IP地址:10.0.0.172

11、問:安卓手機設置短信,鬧鈴和來電鈴聲需要添加什么名稱的文件夾?

答:

12、問:齊盛的愿景是什么?

答:成為受人尊敬和最具創新能力的西南領先企業。

13、問:齊盛的事業觀是什么?

答:勤勞、敬業、誠信、團隊、品質、責任、創新、重結果。

14、問:TCL的三個涵義?

答:1:TELEPHONE COMMUNICATION LIMITED CORPORATION

2、TODAY CHINA LION

3、The Creative Life

15、問:例舉5個基帶芯片生產商。

答:ADI(模 擬 器 件-美 國)TI(德 州 儀 器-美 國)Agree(杰爾系統/Lucent朗訊-美國)Skyworks(思佳訊 –美國)Infineon(英飛凌-德國)Broadcom(博通-美國)Nexperia(飛利浦-荷蘭)MTK(聯發-臺灣)Spreadtrum(展訊-中國)Rockchips Electronics(瑞芯微-中國)

16、問:OS的管理功能?

答:進程與處理機管理、作業管理、存儲管理、設備管理、文件管理

17、問:User Interface含義?

答:是介于用戶和手機操作系統之間的,人與手機之間傳遞、交換信息的媒介,是用戶使用手機操作系統的綜合操作環境。

18、問:TCL通訊產業鏈中一共有幾個系列產品?請分別舉例。

答:1.T系列(低端系列)T218,T355.I系列(互聯網手機)i780,i808,i808籃球版,i898,i905,i908;E系列(音樂互聯網手機):E309,E588,E59;4.A系列(智能互聯網手機):A890,A990,A906,A919,A966,A998;5.平板電腦系列:pad16、openpad

19、問:什么是FTA測試系統?

答:FTA測試全稱是全面型號認證(FULL TYPE APPROVAL)。所有的移動電話生產企業為了使自己生產的手機能進入市場,都必須取得國際移動設備標識(該標識在全球范圍內是唯一的),即IMEI(INTERNATIONAL MOBILE EQUIPMENT IDENTIFIER)。

20、問:第一部手機是什么時候誕生的?誰是締造者?

答:1973年4月,馬丁·庫帕。

21、問:機器在無法正常開機的情況下,可以采用什么辦法強制啟動。

答:同時按電源按鈕和音量加號鍵。

22、問:1335+1里面每個數字各代表什么內容?

答:1代表一句話吸引客戶 3代表三個獨特賣點

3代表三個獨特賣點的體驗 5代表5個技術參數 1代表一個落單動作

23、Android系統相比于其他系統,主要優勢在于哪些方面?(包括系統本身和運營模式)

24、請列舉出三款市面上常見的不同品牌的Android手機,并簡單描述他們的優勢和劣勢?

25、塞班手機想借助OVI達到什么角色的轉換,并簡述OVI的理念?

26、論述,iPhone的成功對我們智能機的發展有何啟示和借鑒?

27、你認為ANDROID手機在中國智能手機市場存在的優勢和機會?請簡述。

28、我們公司目前主打的產品是TCLA966,請說出主要的賣點。

29、請你描述下作為一個合格的促銷他在賣場里主要的工作內容。

30、二、填空題

29、當前市場上智能機外殼主要采用鋼琴烤漆和細磨砂兩種工藝材質,鋼琴烤漆的優點是亮度高,不易掉漆;細磨砂材質的優點是防滑、防指紋、防刮、冬天不冷手、夏天不粘手。

21、給客戶演示音樂播放功能,盡量讓客戶使用耳機,播放的文件必須采用ape和flac格式,這兩種格式也叫無損上傳格式。

22、給客戶介紹功能,盡量使用少而精的介紹方法,多用軟件組合的方法,以照相為例,可以分成介紹清晰度、多點觸控、圖片處理、云存儲。

23、定價銷售的品牌主要有TCL、金立、步步高、OPPO

24、TCL智能機的電池觸點是四個,因為TCL采用的是歐洲標準,擁有阿爾卡特技術。

25、決定智能機屏幕顯示效果的三要素:材質、分辨率、屏幕色彩數。

26、訊飛輸入法有可以直接手寫、可以連寫、可以語音識別,并且可以直接識別文字、數字、其他字符,可以識別普通話、四川話、英語。

27、催單的時候會提封閉式的問題,例如刷卡還是付現,紅色還是白色。

28、TCL品牌的介紹要點有TCL的本來意思、全球第七大手機供應商、擁有阿爾卡特技術、為MOTO代工1000萬臺一年。

29、售價在1300-2000的競品智能機有聯想A500、聯想A520、金立GN105、GN106、T703.30、自成都嘉華信息實業有限公司成立以來,公司一直堅持著:比廠家更了解我們的市場,比商家更關心他們的利潤,比員工更關心他們的未來 的企業價值觀。

34、當今最流行的軟件下載平臺有:安卓市場、豌豆夾、91助手、機鋒網。

31、智能機發展的兩大趨勢是大屏幕旗艦和3G+智能。

32、Android英文的意思是機器人,安卓操作系統的兩大特點是免費和開放。

33、OHA的中文意思是手機開放聯盟,其中成員主要包括芯片制造商、手機生產商、移動運營商、軟件開發商。

34、世界上手機CPU生產商主要有德州儀器、英特爾、高通、三星、MTK。

35、著名芯片生產商TI中文名為德州儀器,其主要的優點是低頻高能、耗電量少,其主要缺點是價格不菲。

36、Android平臺的智能手機的CPU占比最多的是高通,因為高通是第一個支持Android操作系統的芯片生產商,其主要優點是主頻高、多媒體表現出色,缺點是對功能切換處理能力一般。

37、三星是當今世界上唯一能夠獨立生產手機任何部件的廠商,其自己生產的芯片主要優點是耗電量低、價格便宜,缺點是性能較低。

38、中國的3G網絡運營商有三個,中國移動采用的是TD-SCDMA制式,中國聯通采用的是WCDMA制式、中國電信采用的是CDMA2000制式。

39、決定手機CPU的性能的三個主要指標有主頻、GPU、生產工藝。其中主頻主要表現CPU的運行速度,GPU是指圖形處理能力,生產工藝主要決定CPU的能耗。

40、當今智能機市場上,屏幕分為電阻屏和電容屏,主要的屏幕材質有TFT、SLCD、IPS、AMOLED、SUPERAMOLED。

41、智能機與功能機最主要的差別在于是否擁有操作系統,智能機主要有硬件、操作系統、軟件和網絡四部分組成。

43、世界上首款搭載Android2.0系統的手機是由摩托羅拉公司生產的,它是當時最薄的側滑全鍵盤手機,它有一個很好聽的中文名字,叫里程碑。

44、三星最新的高端智能手機系列名稱為蓋世系列,其中很有代表性的一款為I9100,它采用的屏幕材質為 SUPER AMOLED。

45、安卓系統目前應用的最高版本為___________,其代號為“凍酸奶”,它的主要優勢有:UI界面更加美觀、語音搜索更加方便、支持離線地圖存儲,相比以前版本在 和 提升很大,這是目前Iphone手機所不具備的。

46、Android系統支持大量的第三方應用軟件和游戲,類似iPhone的App store,它也可以通過安卓市場進行下載,下載完成后,安裝文件的拓展名為APK。

47、低端智能機的目標消費群大致可以分為兩大類,分別是功能機轉智能機、塞班轉安卓。

48、市面上主要的操作系統有Android、塞班、RIM、IOS、MEGOO、Windows 7,按照市場占比排名,前四名是Android、IOS、塞班、Windows.49、TCLA966的CPU采用的是MTK6573,主頻650MHz,屏幕3.5英寸,分辨率480x320,攝像頭是500W后置攝像頭+30W前置攝像頭,RAM256M,ROM512M。

50、

第三篇:銷售員必須知道的智能機、安卓、MTK6573基本常識

銷售員必須知道的智能機、安卓、MTK6573基本常識 什么是智能機?!說通俗一點就是一個簡單的“1+1=”的公式,“掌上電腦+手機=智能手機”。從廣義上說,智能手機除了具備手機的通話功能外,還具備了PDA的大部分功能,特別是個人信息管理以及基于無線數據通信的瀏覽器和電子郵件功能。智能手機為用戶提供了足夠的屏幕尺寸和帶寬,既方便隨身攜帶,又為軟件運行和內容服務提供了廣闊的舞臺,很多增值業務可以就此展開,如:股票、新聞、天氣、交通、商品、應用程序下載、音樂圖片下載等等。

智能機需要具備的幾個條件。具備普通手機的全部功能,能夠進行正常的通話,發短信等手機應用。

具備無線接入互聯網的能力,即需要支持GSM網絡下的GPRS或者CDMA網絡下的CDMA 1X或者3G網絡。

具備PDA的功能,包括PIM(個人信息管理),日程記事,任務安排,多媒體應用,瀏覽網頁。

具備一個具有開放性的操作系統,在這個操作系統平臺上,可以安裝更多的應用程序,從而使智能手機的功能可以得到無限的擴充。

智能機與功能機的不同?智能機支持在互聯網全面的搜索、下載、和應用安裝,給用戶帶來類平板電腦的全面體驗;尤其是在跟3G網絡相結合更是讓智能手機成為了一部小巧的便于攜帶,功能多樣、應用廣泛的掌上電腦,辦公、娛樂、生活面面俱到,不再需要電紙書,不再需要商務通、不再需要電子詞典、不再需要MP4、不再需要GPS導航,不再需要掌上游戲機,所有一切智能機幫你完全HOLD住!

智能機的廣泛用途。高速上網:智能機與3G網絡相組合構成高速便捷的上網功能,提供相對功能機更加便捷、豐富的網絡資源和網絡應用,看書、看視頻、瀏覽資訊、聽歌、翻網頁智能手機比便攜電腦更加便捷;

多重通訊:智能手機的通訊功能不再局限于打電話、發短信或是簡單的QQ聊天,隨著智能機的發展,視頻電話、語音聊天變得更加簡單,原有的QQ、飛信、MSN在手機上擁有越來越多的功能,和使用電腦基本沒有區別;

時事灌水:隨著智能機的普及,資訊傳播的方式更加多樣化,微薄的出現讓人們對時事、評論擁有了更強的參與性和更多的發言權,爆料、求助、評論讓整個網絡成為一個更加公開、透明、豐富的信息圈;

游戲娛樂:基于智能手機開發的眾多游戲(益智休閑、動作競技、射擊冒險、體育競速、角色扮演、經營策略、網絡模擬)讓人們繁忙閑暇的娛樂更加多樣化,讓平淡的生活更加豐富多彩;

學習辦公:郵件系統、文件管理系統、專業電子書、各類電子詞典讓您便捷學習辦公;智能機常用輔助平臺(Android)豌豆莢: 全程“豌豆莢手機精靈”是一款安裝在桌面電腦上的軟件,把手機和電腦連接上后,可通過“豌豆莢手機精靈”在電腦上管理手機中的通訊錄、短信、應用程序和音樂等,也能在電腦上備份手機中的資料。此外,可直接一鍵下載眾多主流應用網站資源、程序、游戲,完成手機的管理安裝。

91助手: 91手機助手是由網龍公司推出的第三方智能手機管理軟件,是目前全球唯一一款全面支持IPhone、Windows Mobile、Android、Wince、Sym-bian S60五大智能手機系統的PC端管理軟件。具有智能手機主題、壁紙、鈴聲、音樂、電影、軟件、電子書的搜

索、下載、安裝的功能。連接91手機助手即可自動更新訂閱RSS,為PC客戶端與移動閱讀搭建了無縫鏈接的橋梁。

其他: 360手機助手(與91合作)、QQ手機同步管理

輔助平臺(Android)相關設置,使用輔助平臺(豌豆莢、91助手等)需要對手機提前設置;

首先需要在設置——應用程序下勾選“未知源”

其次需要在設置——應用程序——開發下勾選“USB調試”

然后用數據線吧手機與電腦相連接;

注:在豌豆莢和91助手中都可以設計應用直接安裝到SD卡,建議不要直接安裝到手機,這樣可以提高你手機的運行速率和反應速度;

頂級配置——MT6573芯片:MT6573為聯發科技推出的支持全球成長最快的AndroidTM 最新操作系統的智能型手機芯片解決方案。聯發科技推出此款搭載豐富多媒體、高整合、低功耗的3.5G智能型手機解決方案,其高性價比將不僅僅符合運營商的需求,更符合新興市場對于平價3G移動產品的迫切需求。

特點:MT6573高度整合基帶(Baseband)、多媒體處理器(Application processor)以及必要的電源管理組件成為一顆系統單芯片,大幅降低占板面積以及所需零器件,同時也支持聯發科技全系列無線連接芯片組包括藍牙、WiFi、FM Radio、GPS以及手機電視等規格,其低成本高兼容性不但提供手機制造商產品差異化的靈活度,同時縮短上市時間。

參數:MT6573采用ARM11的AP處理器主頻達到650 MHz,modem支持 HSPA速度達 7.2Mbps/5.76Mbps,支持雙卡雙待,其優異性能還包括支持豐富多媒體高端規格:支持8百萬像素照相機并支持自動對焦、臉部偵測、微笑快門,并支持高達FWVGA 30fps流暢的錄像以及影像播放,觸摸屏幕支持FWVGA的分辨率等。除此之外,MT6573優化的硬件設計支持功能強大的3D圖像處理技術,優于其他同等級CPU的3D圖像處理表現,能將AndroidTM平臺3D UI設計的精致度生動完美的呈現。

第四篇:數據恢復基礎知識

數據恢復基礎知識

計算機上只有數據是最關鍵的,數據的丟失才是最大的損失。下面我來講解一些數據恢復的基本知識。

首先申明一點,對于重要數據,備份數據才是防止數據丟失的根本方法,而數據恢復依賴于很多因素,很難完全恢復數據,一般是僅僅可以恢復部分數據。

數據恢復就是找回丟失的數據,例如徹底刪除某個文件或文件夾,重新格式化磁盤,重新分區磁盤等等都會造成數據的丟失。更嚴重的數據丟失是存儲介質硬件損壞,例如,硬盤不小心摔壞了、硬盤根本就不認了、硬盤有大量壞道等等。最值得注意的一點是,一旦意識到數據丟失了,立刻停止一些不必要的*作,誤刪、誤格后,不要再往磁盤里寫數據了!磁盤摔壞后,不要再加電了!磁盤出現壞道讀不出來,不要反復讀盤了等等。

硬盤故障大致可分為硬故障和軟故障兩大類。硬故障即PCBA板損壞、盤片劃傷、芯片及其它原器件燒壞、斷針斷線、磁頭音圈電機損壞等,是由于硬盤自身的機械零件或電子元器件損壞而引起。劇烈的震動、頻繁開關機、電路短路、供電電壓不穩定等比較容易引發硬盤物理性故障,硬件故障一般表現為CMOS不認硬盤,常有一種“咔嚓咔嚓”的磁組撞擊聲或電機不轉、通電后無任何聲音、磁頭不對造成讀寫錯誤等現象,對上面描述的大部分情況,一般都要送到專門的數據恢復中心檢測和恢復數據。硬盤軟故障即硬盤數據結構由于某種原因,比如說病毒導致硬盤數據結構混亂甚至不可被識別而形成的故障。一般來說,主板BIOS硬盤自動檢測(IDE HDD AUTO DETECTION)功能能夠檢測到硬盤參數,均為軟故障。一般情況下,硬盤在發生故障時系統會在屏幕上顯示一些提示信息,所以我們可以按照屏幕顯示的提示信息找到故障原因,有針對性地實施解決方案。軟故障包括誤分區、誤格式化、誤刪除、誤克隆、MBR丟失、BOOT扇區丟失、病毒破壞、黑客攻擊、分區信息丟失、RAID0磁盤陣列、RAID1磁盤陣列、RAID5磁盤陣列失效等因素造成的數據丟失。硬盤軟故障相對于物理故障來說,更容易修復些,而它對數據的損壞程序也比硬盤物理故障來得輕些。

下面主要說明一下硬盤發生軟故障后數據恢復的大概方法,部分原理可以用于優盤,光盤等的數據恢復。

基礎知識-硬盤, 分區和文件系統的介紹

硬盤內部結構

關于硬盤結構的文章已經非常多了,不過真正要說清楚的話,就算專門出一本書也說不完,因此這里就不再從頭細細講述了。

硬盤最基本的組成部分是由堅硬金屬材料制成的涂以磁性介質的盤片,不同容量硬盤的盤片數不等。每個盤片有兩面,都可記錄信息。盤片被分成許多扇形的區域,每個區域叫一個扇區,每個扇區可存儲128×2的N次方(N=0.1.2.3)字節信息。在DOS中每扇區是128×2的2次方=512字節,盤片表面上以盤片中心為圓心,不同半徑的同心圓稱為磁道。硬盤中,不同盤片相同半徑的磁道所組成的圓柱稱為柱面。磁道與柱面都是表示不同半徑的圓,在許多場合,磁道和柱面可以互換使用,我們知道,每個磁盤有兩個面,每個面都有一個磁頭,習慣用磁頭號來區分。扇區,磁道(或柱面)和磁頭數構成了硬盤結構的基本參數。在老式硬盤中,采用的都是這種比較古老的CHS(Cylinder/Head/Sector)結構體系。因為很久以前,在硬盤的容量還非常小的時候,人們采用與軟盤類似的結構生產硬盤。也就是硬盤盤片的每一條磁道都具有相同的扇區數,由此產生了所謂的3D參數(Disk Geometry),即是磁頭數(Heads)、柱面數(Cylinders)、扇區數(Sectors)以及相應的3D尋址方式。對于現在的新硬盤來說,都已經全部不采用這樣的結構,而是采用了更加科學的結構方式,目前的硬盤都是線性尋址也就是直接使用扇區號來訪問硬盤,137G以下的硬盤使用32位整數作為扇區號,而137G以上的硬盤使用48位整數作為扇區號。CHS結構體系

其中:磁頭數表示硬盤總共有幾個磁頭,也就是有幾面盤片,最大為255(用8個二進制位存儲);柱面數表示硬盤每一面盤片上有幾條磁道,最大為1023(用10個二進制位存儲);扇區數表示每一條磁道上有幾個扇區,最大為63(用6個二進制位存儲);每個扇區一般是512個字節,理論上講你可以取任何一個你喜歡的數值,但好像至今還沒有發現取別的值的。所以磁盤最大容量為:

255×1023×63×512/1048576=8024MB(1M=1048576Bytes)或硬盤廠商常用的單位:

255×1023×63×512/1000000=8414MB(1M=1000000Bytes)

由于在老式硬盤的CHS結構體系中,每個磁道的扇區數相等,所以外道的記錄密度要遠低于內道,因此會浪費很多磁盤空間(軟盤也是一樣)。為了進一步提高硬盤容量,現在硬盤廠商都改用等密度結構生產硬盤。這也就是說,每個扇區的磁道長度相等,外圈磁道的扇區比內圈磁道多。采用這種結構后,硬盤不再具有實際的3D參數,尋址方式也改為線性尋址,即以扇區為單位進行尋址。而為了與使用3D尋址的老軟件兼容(如使用BIOSInt13H接口的軟件),廠商通常在硬盤控制器內部安裝了一個地址翻譯器,由它負責將老式3D參數翻譯成新的線性參數。這也是為什么現在硬盤的3D參數可以有多種選擇的原因(不同的工作模式可以對應不同的3D參數,如LBA、LARGE、NORMAL)。而隨著磁盤密度的增加、機構的進一步復雜、功能和速度上的提高,如今的硬盤都會在磁盤里面劃分出一個容量比較大的,稱為“系統保留區”的區域,用于儲存硬盤的各種信息、參數和控制程序,有的甚至把硬盤的Fireware也做到了系統保留區里面(原來這些信息都是儲存在硬盤控制電路板的芯片上的)。這樣雖然可以進一步簡化生產的流程,加快生產速度和降低生產成本,但是從另一方面,卻又大大增加了硬盤出現致命性損壞的幾率和縮短了硬盤的使用壽命。

恢復數據的原理和方法

發覺硬盤故障,需要恢復數據的時候,第一步所要做的就是檢測,判斷磁盤的故障原因和數據損壞程度

只有明確磁盤的損壞程度和故障原因,才能采取正確的步驟恢復數據:

硬盤內部故障,表現形式一般是CMOS不能識別硬盤,硬盤異響,那么可能的故障原因物理磁道損壞、內電路芯片擊穿、磁頭損壞等等,可以采用的修復手段有:內電路檢修、在超凈間內打開盤腔修復,這種情況只能送到專業的數據恢復公司。

硬盤外電路故障,如果CMOS不能識別硬盤,硬盤無異響,那么可能的故障原因是外電路板損壞、芯片擊穿、電壓不穩燒毀等等,可以采取的手段是外電路檢修,或者更換相同型號的硬盤的電路板,一般需要送到專業的數據恢復公司。

軟故障,如果CMOS能識別硬盤,一般是硬盤軟故障,破壞原因一般是系統錯誤造成數據丟失,誤分區、誤刪除、誤克隆、軟件沖突、病毒破壞等等,可以采用的方法有專用數據恢復軟件或者人工方式。

下面具體講解軟故障的數據恢復方法 1.確認數據丟失的故障原因

1.硬盤數據丟失,故障原因包括:

病毒破壞,誤克隆,硬盤誤格式化,分區表失丟,誤刪除文件,移動硬盤盤符認不出來(無法讀取其中數據,硬盤零磁道損壞),硬盤誤分區,盤片邏輯壞區,硬盤存在物理壞區。

2.文檔數據損壞,如Office 系列數據文件損壞,Zip、MPEG、asf、RM 等文件數據損壞。

2.根據故障原因,采用相應的手段和步驟

1.備份數據,根據數據的重要程度,決定是否需要備份數據,備份數據的一般步驟是

1.卸下損壞硬盤,接到另外一臺完好的機器,注意新機器上有足夠的硬盤空間備份

2.使用ghost的原始模式(raw),一個扇區一個扇區的把損壞磁盤備份到一個鏡像文件中。如果硬盤上有物理壞道,最好是采用ghost的方式制作一個磁盤鏡像,然后所有的*作都在磁盤鏡像上進行,這樣可以最大限度的保護原始磁盤不被進一步損壞,可以最大限度的恢復數據。——我猜想作者是說把磁盤內容克龍到另一塊磁盤上做恢復的做作,以避免在原磁盤的寫*作。

3.修復硬盤數據。修復硬盤數據有2種類型,一種直接在原始硬盤修改,一種是把讀出數據存儲到其他的硬盤上。基本思路就是就是根據磁盤現有的信息最大限度的推斷出丟失的分區和文件系統系統的信息,把受損的文件和系統還原,所以如果信息損失太多,那么是不可能恢復數據的。比如錯誤刪除一個文件后,隨即又拷貝了較大的文件過來,那么多半是被刪除的文件被新拷貝過來的文件所覆蓋,幾乎是無法恢復了。

一個常識就是,如果想要恢復數據,那么不要在出問題的磁盤上運行scandisk或者Norton Disk Doctor等直接修復文件系統錯誤的軟件,切記。

零磁道,MBR和分區表DPT:

零磁道處于硬盤上一個非常重要的位置,硬盤的主引導記錄區(MBR)就在這個位置上。零磁道一旦受損,將使硬盤的主引導程序和分區表信息遭到嚴重破壞,從而導致硬盤無法自舉。MBR:

當通過Fdisk或其他分區工具對硬盤進行分區時,分區軟件會在硬盤0柱面0磁頭1扇區建立MBR(Main Boot Record),即為主引導記錄區,位于整個硬盤的第一個扇區,在總共512字節的主引導扇區中,主引導程序只占用了其中的446個字節,64個字節交給了DPT(Disk Partition Table硬盤分區表),最后兩個字節(55 AA)屬于分區結束標志。主引導程序的作用就是檢查分區表是否正確以及確定哪個分區為引導分區,并在程序結束時把該分區的啟動程序調入內存加以執行。DPT:

分區表DPT(Disk Partition Table),把硬盤空間劃分為幾個獨立的連續的存儲空間,也就是分區。分區表DPT則以80H或00H為開始標志,以55AAH為結束標志。分區表決定了硬盤中的分區數量,每個分區的起始及終止扇區、大小以及是否為活動分區等。

通過破壞DPT,即可輕易地損毀硬盤分區信息。分區表分為主分區表和擴展分區表。

主分區表位于硬盤MBR的后部。從1BEH字節開始,共占用64個字節,包含四個分區表項,這也就是為什么一個磁盤的主分區和擴展分區之和總共只能有四個的原因。每個分區表項的長度為16個字節,它包含一個分區的引導標志、系統標志、起始和結尾的柱面號、扇區號、磁頭號以及本分區前面的扇區數和本分區所占用的扇區數。其中”引導標志”表明此分區是否可引導,即是否活動分區。當引導標志為”80″時,此分區為活動分區;”系統標志”決定了該分區的類型,如”06″為DOS FAT16分區,”0b”為DOS FAT32分,”63″為UNIX分區等;起始和結尾的柱面號、扇區號、磁頭號指明了該分區的起始和終止位置。分區表項的16個字節分配如下: 第1字節: 引導標志

第2字節: 起始磁頭

第3字節: 低6位為起始扇區, 高2位與第4字節為起始柱面 第4字節: 起始柱面的低8位 第5字節: 系統標志 第6字節: 終止磁頭

第7字節: 低6位為終止扇區, 高2位與第8字節為終止柱面 第8字節: 終止柱面的低8位

第9-12字節: 該分區前的扇區數目 第13-16字節: 該分區占用的扇區數目

擴展分區作為一個主分區占用了主分區表的一個表項。在擴展分區起始位置所指示的扇區(即該分區的第一個扇區)中,包含有第一個邏輯分區表,同樣從1BEH字節開始,每個分區表項占用16個字節。邏輯分區表一般包含兩個分區表項,一個指向當前的邏輯分區,另一個則指向下一個擴展分區。下一個擴展分區的首扇區又包含了一個邏輯分區表,這樣以此類推,擴展分區中就可以包含多個邏輯分區。為方便說明,我們把這一系列擴展分區和邏輯分區分別編號,主擴展分區為 1號擴展分區,第一個邏輯分區表所包含的兩個分區分別標為 1號邏輯分區和 2號擴展分區,依次類推。

主分區表中的分區是主分區,而擴展分區表中的是邏輯分區,并且只能存在一個擴展分區。FS即文件系統,位于分區之內,用于管理分區中文件的存儲以及各種信息,包括文件名字,大小,時間,實際占用的磁盤空間等。windows 目前常用的文件系統包括FAT12,FAT16,FAT32和NTFS系統。

DBR(Dos Boot Record)是*作系統引導記錄區。它位于硬盤的每個分區的第一個扇區,是*作系統可以直接訪問的第一個扇區,它一般包括一個位于該分區的*作系統的引導程序和相關的分區參數記錄表。

簇,是文件系統中最小的數據存儲單元,由若干個連續的扇區組成,硬盤的扇區的大小是512字節(幾乎是用于所有的硬盤),也就是既是一個字節的文件也要分配給它1個簇的空間,剩余的空間都被浪費了,簇越小,那么對小文件的存儲的效率越高,簇越大,文件訪問的效率高,但是浪費空間比較嚴重。FAT(file allocation table)即文件分配表,記錄了分區中簇的的使用情況,FAT表的大小與硬盤的分區的大小有關,為了數據安全起見,FAT一般做兩個,二FAT為第一FAT的備份,用于FAT12,FAT16,和FAT32文件系統。

DIR是DIRECTORY即根目錄區的簡寫,根目錄區存儲了文件系統的根目錄中的文件或者目錄的信息(包括文件的名字,大小,所在的磁盤空間等等),FAT12,FAT16的DIR緊接在第二FAT表之后,而FAT32的根目錄區可以在分區的任何一個簇。MFT(Master File Table)是NTFS中存儲有關文件的各種信息的數據結構,包括文件的大小,時間,所占據的數據空間等等。

以FAT32為例,FAT32分區的的0-2扇區為FAT32文件系統的DBR即引導扇區,3-5扇區為0-2扇區的備份。6-31扇區為空,32扇區開始為第一個FAT表,FAT表的大小與硬盤的分區的大小有關。隨后是第2個FAT表,剩余的空間都是實際的文件所占用的,包括目錄和文件。FAT32文件系統的根目錄并不一定是數據區的第一個簇,它可以位于數據區的任何一個簇,這也是FAT32的根目錄大小不在受255個文件限制的原因,這也是FAT32的文件名可以支持長文件名的原因之一。

分區表丟失,表現為硬盤原先所有分區或者部分分區沒了,在磁盤管理器(winxp win2000 win2003)看到未分區的硬盤或者未分區的空間。有多種可能:

病毒,當年的cih病毒會用無效的數據填充分區表和第一個分區的數據,這種情況下,從前面介紹的分區的性質來看,c盤的數據很難恢復,而隨后d盤和e盤等分區的實際數據并沒有被破壞,而僅僅是分區表丟失而已,所以只要找到D盤和E盤等分區的正確的起始和結束位置,很容易恢復。

重新分區,使用fdisk對磁盤重新劃分空間分布,那么原來的分區表被新的分區表取代,這個時候,同樣是原來分區的數據沒有損壞,僅僅是分區表指向了不正確的位置。

誤刪除文件的恢復

誤刪除文件的恢復的原理是什么呢?為什么刪除文件后,又可以恢復回來?是不是所有的刪除的文件都可以恢復?

當我們存儲一個文件的時候,*作系統首先在一個記錄所有空間使用情況的表格中,找到足夠容納我們的新文件的空間,然后把文件內容寫到相對應的硬盤扇區上,最后在表格中標出該空間被占用了。

當我們刪除一個文件的時候,一般并不對實際文件所占用的扇區進行*作,而是僅僅在該表格中指明那些空間是空白的了,可以分配給別的文件使用。在這個時候,被刪除的文件的實際內容并沒有受到破壞,可以恢復回來。如果我們刪除一個文件后,又重新創建了一個文件,那么被刪除文件所占用的扇區就有可能被新創建的文件所使用,這時候就無法恢復原來被刪除的文件了。所以一旦錯誤的刪除了文件,必須注意的就是不要對該文件所在的分區進行寫*作了,否則有可能覆蓋原來刪除的文件,從而導致數據無法恢復。

對于誤刪除的文件,我們有很多選擇,如finaldata,recover4all,easyrecovery,這些軟件使用很簡單,直接按照向導的指示就可以了。

下面介紹一種手工恢復被刪除數據的方法,特別是使用這種自動化的方法恢復無效的時候,這種方法適合恢復有明顯特征的結構簡單的文件,如文本文件,如果格式復雜,就需要寫一個類似的程序來恢復了。原理就是直接在分區中尋找被刪除的文件的內容。

一個實例就是微軟公司的vc6,vc6的ide有一個bug,一直沒有修復,就是存儲寫好的程序代碼的時候,偶然會彈出一個對話框說無法存儲文件,這個時候必須再存一次才可以,如果你直接關閉vc6,就會發現剛才那個文件被刪除了(這個bug是微軟確認的,一直到vc6的sp5補丁也沒有修復)。

我的一個朋友使用vc6的時候遇到了這個bug,而且他以為vc6出了問題,直接關閉了vc6,結果很費勁才調試好的很長的一的文件就失蹤了。我首先試用了finaldata和easyrecovery,結果找出很多以前刪除的文件,就是沒有需要的。沒有辦法的情況下,只好使用強行搜索的方法了

1.運行winhex,選擇tools菜單中的opendisk,選擇誤刪除的文件所在的邏輯盤c盤,2.選擇search菜單,使用find text命令,在打開的c盤上直接搜索程序代碼中的特征串“增加了處理Reg_Expand_SZ”,3.經過一段時間后,把找到的代碼所在扇區的前后幾個扇區全部復制下來,拷貝到一個新的文件中,這樣就找回了原來的代碼。

對于恢復結構性很強的文檔,如果自動化的方式不起作用,可以寫一個小程序來搜索的同時加以判斷,或者直接利用winhex提供的接口寫一個腳本,如果數據很重要,這樣的手段也是很需要的。如果文件分散在分區的多個位置,還需要根據文檔的內部結構來重新組織文檔,才能徹底恢復數據。

誤格式化的原理也是非常類似,僅僅是快速格式化的時候,并沒有覆蓋原來的數據,所以可以恢復

第五篇:安卓學習心得

Android學習心得

-----093380117

計算機應用(1)

張峰

1.關于Activity

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

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

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

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

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

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

2.關于 Intent的使用

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

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

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

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

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

3.關于ListActivity

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

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

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

從ArrayAdapter上溯到BaseAdapter,發現還有幾個同源的Adapter也應該可以使用,象SimpleAdapter和CursorAdapter,還是做個例子來實驗一下吧。

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

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

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

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

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

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

5.關于Service和Notification

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

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

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

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

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

6.GridView與ImageView

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

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

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

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

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

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

5.構造一個消息,將上述返回值以及其他相關內容綁定在該消息上,發送回主線程。

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

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

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

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

7.顯示控件使用

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

從控件的使用上,和網頁的設計類似,盡量用parent_width之類的抽象長度,用Theme來做風格,抽取所有的字串等信息做本地化設計。相關內容參看Implementing a UI就好。

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

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

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

8.Intent消息傳遞

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

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

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

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

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

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

9.ContentProvider數據模型

數據庫操作

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

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

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

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

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

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

10.學習感想

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

下載安卓智能機數據恢復推薦word格式文檔
下載安卓智能機數據恢復推薦.doc
將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
點此處下載文檔

文檔為doc格式


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

相關范文推薦

    智能分析助力安防進入大數據時代

    智能分析助力安防進入大數據時代 隨著智慧城市和智能交通的快速發展,金融、交通、政府等傳統領域的安防應用更加深入,新生領域如教育、衛生、體育、能源飛速發展,社區、居民相......

    簡單的數據恢復協議

    數據恢復協議書 甲方: 乙方: 甲方于20年月日把受損的硬盤交由乙方進行數據恢復,由于硬盤里的數據對于甲方來極其重要,并且有可能威脅到甲方的安全,故甲乙雙方立如下保密協議: 1......

    常見數據恢復問題集錦

    1.問: 什么是數據修復? 答:簡單地說,數據修復就是將無法正常讀取的數據從損壞的存儲介質或操作系統中最大限度地還原出來,還原出數據的多少及完整性,要視損壞的程度和故障后的操......

    數據恢復保密協議

    數據恢復保密協議 甲方: 乙方:中國人網絡數據恢復中心 一、服務內容: 甲方委托乙方采用乙方掌握的相應技術恢復甲方所需有用的數據,盡量降低因數據丟失給甲方造成的損失。乙方所......

    數據恢復實習報告

    實驗一 FAT32數據存儲分析 一、實驗內容 1、 使用磁盤軟件分析FAT32文件系統的分區引導扇區(DBR)、文件分配表(FAT)、文件目錄表(FDT)。 2、 學會使用常見數據恢復軟件。 二、......

    智能機交流會總結

    智能機交流會總結在領導的指導下,在聯通直銷人員的積極籌備與準備下,我們的智能手機交流會終于圓滿的落下帷幕。為了這次交流會能夠圓滿成功的舉行,聯通直銷成員都是煞費苦心,積......

    如何學習安卓(精選5篇)

    如何學習安卓 想學編程開發,那要先會一門編程語言,現在可以試著去學學C語言,雖然這個安卓沾不上邊,但是,C語言的編程思想還是很重要的,學完了C語言之后,他的語法基本上和所有的編程......

    安卓實驗報告五篇

    安卓實驗報告 班級:學號:姓名:xxxxx 11111111 xxxx 實驗一:Activity生命周期的測試 一:實驗目的 掌握使用Eclipse開發Android應用開發程序的方法; 掌握Android虛擬設備的創建方......

主站蜘蛛池模板: 99久久人妻无码精品系列| 免费无码在线播放av| 日本无码欧美一区精品久久| 亚洲国产成人第一天堂| 国产在线精品99一卡2卡| 亚洲国产精品原创巨作av| 免费看黄a级毛片| 国产精品有码无码av在线播放| 色欲a∨无码蜜臀av免费播| 精品国产乱码久久久软件下载| 亚洲精品无码久久千人斩| 国内午夜国产精品小视频| 午夜不卡久久精品无码免费| 成人免费b2b网站大全在线| 中字幕久久久人妻熟女天美传媒| 亚洲国产成人无码av在线| 天堂а√在线中文在线| 噜噜噜亚洲色成人网站| 亚洲中文字幕一二三四区苍井空| 日日摸日日踫夜夜爽无码| 中国少妇xxxx做受| 东京热tokyo综合久久精品| 国产亚洲视频在线播放香蕉| 欧美日本日韩aⅴ在线视频| aⅴ中文字幕不卡在线无码| 欧美和黑人xxxx猛交视频| 久久天天躁狠狠躁夜夜96流白浆| 日韩做a爰片久久毛片a片| 日韩精品无码一区二区三区| 高中生粉嫩无套第一次| 日韩精品一区二区三区中文不卡| 成人无码精品一区二区三区亚洲区| 国产色a在线观看| 欧美黑人xxxx又粗又长| 精品久久久久香蕉网| 亚洲女女女同性video| 国产精品久久久久久久免费看| 亚洲日韩欧美内射姐弟| 成熟了的熟妇毛茸茸| 日本肥老妇色xxxxx日本老妇| 日韩成人无码影院|