安卓智能机数据恢复推荐

时间: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虚拟设备的创建方......