1、简述Android各个版本从1.0-12.0的演化更新内容。

答:(1)2008年9月发布的Android第一版:Android1.1;在Android 1.5版本之后开始为每一个版本以甜品的形式来命名,每个系统版本给予甜品的英文单词的首字母,并且系统版本越高,这个字母在英文26字母表中越靠后。

(2)Android 1.5 Cupcake:除了带来图标ID上的变化外,还有虚拟键盘,在08年前后的智能手机主要还是依赖物理键盘进行输入,而这个在Android 1.5中得到了改变。

(3)Android 1.6 Donut:带来主要变化是对不同分辨率屏幕的支持,独立于像素密度,这使得有更多可能的组合出现。

(4)Android 2.0/2.1 Eclair:从这个版本开始,对相机应用的提升改变比较大,在硬件方面开始支持LED闪光灯,也支持很多拍摄场景的调节,比如色彩效果、场景模式、对焦模式和白平衡。

(5)Android 2.2 Froyo:Android 2.2带来了速度的提升和WiFi热点的支持两个重要功能,速度的提升是因为有了Dalvik运行模式,其使安卓性能有了大幅提升,谷歌称性能提升了2到5倍。

(6)Android 2.3 Gingerbread:从姜饼开始加入了对更多传感器的支持,包括气压计和陀螺仪,这时的Android终于迎头赶上iOS尾巴。

(7)Android 3.0 Honeycomb:Android 3.0只是谷歌针对平板的体验进行兼容优化,在功能并没有太多的添加。

(8)Android 4.0 Ice Cream Sandwich:“Holo”界面的引入是Android 4.0最重大的更新,也成了Android往后版本更新的亮点,往后谷歌根据版本的迭代更新,都会对界面元素进行改变以保持新鲜感。

(9)Android 4.1/4.2 Jelly Bean:因受iOS语音助手Siri的刺激,从果冻豆开始谷歌引入了Google Now,作为以谷歌搜索为根基,时刻准备好给你提供任何事情的答案,而且还非常智能,Google Now还具有自我学习能力,根据用户的使用习惯发生改变。

(10)Android 4.4 KitKat:界面变得更加现代化,同时也使得低端机焕发新生,Android 4.4带来了很多性能上的提升,512MB RAM的老古董也能很好地运行KitKat,进一步扩展了Android市场占有率。

(11) Android 5.0/5.1 Lollipop:采用谷歌“Material Design”设计哲学,视觉效果更加扁平化,更加多姿多彩,并且动画过渡效果也使得其更加迷人。谷歌把原来的Dalvik虚拟机全部换成了ART模式,因为少了重新编译这个步骤,APP的运行速度上相比之前还是所提升的。

(12)Android 6.0 Marshmallow:加入了APP关联间的联动、Android Pay、Fingerprint Support三个重要的改变,其中Fingerprint Support增加了对指纹的识别API,谷歌开始在自建官方的指纹识别支持,力求Android统一方案变得更安全。

(13)Android 7.0 Nougat:加入了多任务分屏功能,谷歌从底层上实现多任务分屏操作更多的是增强应用的兼容性,引入了JIT编译器,APP的安装速度将比目前的安卓6.0提升最多75%,而最关键一点是所占用的空间同时减少50%,也引入了全新的VulkanAPI 图形处理器API,可以大幅减少系统动画对CPU的占用。

(14)Android 8.0 Oreo:APP的启动速度比Android 7.0快2倍,后台续航监控最大化限制不常用后台应用的活跃度,加入了分屏画中画模式,比起7.0变得变得更加自由和灵活。通知栏下拉之后变为彩色的背景通知,同时一些应用可以在系统中自己调用背景颜色。

(15)Android 9.0 Pie: 以机器学习为核心,打造“更加智能”的智能手机,安卓9.0可以让机器去学习用户,适应用户,从而让“智能”更加智能;应用可以借助本地硬件的学习成果,来触达更多受众,并为他们提供前所未有的体验。

(16)Android 10.0:Android 10包含多项功能升级,包括手势导航、通知栏管理、全局黑暗模式等等,通知管理新增了“优先”、“无声”和“自适应通知”三种功能,新增深色主题的背景.

(17)Android 11.0:系统主要增强了聊天气泡,安全性和隐私性的保护,电源菜单,可以更好的支持瀑布屏,折叠屏,双屏和 Vulkan 扩展程序等。

(18)Android 12.0:重新发现了代号为 “Columbus”的功能,并且优化了触发问题,新的手势需要更加用力敲击背面。新的双击背面手势可以截取屏幕截图、召唤谷歌 Assistant、打开通知栏、控制媒体播放或打开最近的应用程序列表。

2、Android中实现事件处理的步骤。

答:(1)将事件监听器注册到事件源;

(2)触发事件源上的事件;

(3)生成时间对象;

(4)触发事件监听器,事件被作为参数传入事件处理器;

(5)调用事件处理器做出相应。

3、android的intent的用途

答:Android中提供了Intent机制来协助应用间的交互与通讯,Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将Intent传递给调用的组件,并完成组件的调用。Intent不仅可用于应用程序之间,也可用于应用程序内部的Activity/Service之间的交互。因此,Intent在这里起着一个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者之间的解耦。

Intent是一个将要执行的动作的抽象的描述,一般来说是作为参数来使用,由 Intent来协助完成 Android各个组件之间的通讯。比如说调用startActivity()来启动一个Activity,或者由broadcaseIntent()来传递给所有感兴趣的BroadcaseReceiver,再或者由startService()/bindservice()来启动一个后台的 service。所以可以看出来,Intent主要是用来启动其他的 activity 或者 service,所以可以将intent理解成activity之间的粘合剂。

  1. android中网络通信的实现方法

答:(1)针对TCP/IP的Socket、ServerSocket;

  1. 针对UDP的DatagramSocket、DatagramPackage。这里需要注意的是,考虑到Android设备通常是手持终端,IP都是随着上网进行分配的。不是固定的。因此开发也是有一点与普通互联网应用有所差异的;
  2. 针对直接URL的HttpURLConnection;
  3. Google集成了Apache HTTP客户端,可使用HTTP进行网络编程。针对HTTP,Google集成了Appache Http core和httpclient 4版本,因此特别注意Android不支持httpclient 3.x系列,而且目前并不支持Multipart(MIME),需要自行添加httpmime.jar;
  4. 使用Web Service。Android可以通过开源包如jackson去支持Xmlrpc和Jsonrpc,另外也可以用Ksoap2去实现Webservice ;

(6)直接使用WebView视图组件显示网页。基于WebView 进行开发,Google已经提供了一个基于chrome-lite的Web浏览器,直接就可以进行上网浏览网页。

5、android中数据存储的三种方法

答:(1)文件存储.

将数据存储到文件:Context类中提供了一个openFileOutput()方法,可以用于将数据存储到指定的文件中。该方法接受两个参数:第一个参数是文件名,文件创建时使用,不可以包含路径,只是文件名,因为所有的文件都默认存于 /data/data/<package name>/files 目录下。第二个参数是文件的操作模式:主要有MODE_PRIVATE 和 MODE_APPEND两种,默认是MODE_PRIVATE,表示,当存在相同名称的文件时,所写入的内容会自动覆盖原有文件中的内容。MODE_APPEND,表示,如果该文件已存在,会将所写入的内容追加到文件中,不存在的话就创建新的文件。openFileOutput() 返回的是一个FileOutputStream对象,得到对象之后,可以通过java流的方式,写入文件中。

从文件中读取数据:类似于将数据存储到文件中,Context类中还提供了一个openFileInput()方法,用于从文件中读取数据。这个方法要比openFileOutput()简单一些,它只接收一个参数,即要读取的文件名,然后系统会自动到 /data/data/<package name>/files 中加载这个文件,并返回一个 FileInputStream 对象,得到这个对象,会通过流的方式将数据读取出来。

(2)SharedPreferences存储。

不同于文件的存储方式,SharedPreferences是使用键值对的方式来存储数据的。也就是说,当保存一条数据的时候,需要给这条数据提供一个对应的键,这样在读取数据的时候就可以通过这个键把相应的值取出来。而且SharedPreferences还支持多种不同的数据类型存储,如果存储的数据类型是整型,那么读取出来的数据也是整型的;如果存储的数据是一个字符串,那么读取出来的数据仍然是字符串。

将数据存储到SharedPreferences中:首先、要向SharedPreferences 中存储数据,需要先获取一个SharedPreferences对象。获取的方法有两种:

1、Context类的getSharedPreferences()方法:接受两个参数,第一个参数是用于指定SharedPreferences的名称,没有则创建一个,保存在 /data/data/<packagename>/shared_prefs/目录下。第二个参数用于指定操作模式,目前只有默认的 MODE_PRIVATE模式,相当于传入0.

2、Activity类的 getSharedPreferences() 方法:它只接受一个参数,因为会默认将Activity的类名作为文件名。获取了对象,可以向对象中存储数据,主要分3部分实现:首先调用SharedPreferences对象的edit()方法获取一个SharedPreferences.Editor对象;然后向SharedPreferences.Editor对象中添加数据,比如添加一个布尔型数据就使用putBoolean()方法,添加一个字符串则使用putString()方法,以此类推。最后调用apply()方法将添加的数据提交,从而完成数据存储操作。

从SharedPreferences中读取数据:SharedPreferences对象中提供了一系列的get方法,用于读取存储的数据,每种get方法都对应了SharedPreferences.Editor中的一种put方法,比如读取一个布尔型数据就使用getBoolean()方法,读取一个字符串就使用getString()方法。这些get方法都接收两个参数:第一个参数是键,传入存储数据时使用的键就可以得到相应的值了;第二个参数是默认值,即表示当传入的键找不到对应的值时会以什么样的默认值进行返回。

(3)SQLite存储。

1、SQLite3支持 NULL、INTEGER、REAL(浮点数字)、TEXT(字符串文本)和BLOB(二进制对象)数据类型,虽然它支持的类型虽然只有五种,但实际上sqlite3也接受varchar(n)、char(n)、decimal(p,s)等数据类型,只不过在运算或保存时会转成对应的五种数据类型。

2、SQLite最大的特点是你可以保存任何类型的数据到任何字段中,无论这列声明的数据类型是什么。例如:可以在Integer字段中存放字符串,或者在布尔型字段中存放浮点数,或者在字符型字段中存放日期型值。

3、但有一种情况例外:定义为INTEGER PRIMARY KEY的字段只能存储64位整数, 当向这种字段中保存除整数以外的数据时,将会产生错误。

4、另外,SQLite在解析CREATE TABLE语句时,会忽略CREATE TABLE语句中跟在字段名后面的数据类型信息。

6、android的service的用途及设计方法

答:Service分为本地服务(LocalService)和远程服务(RemoteService):

1、本地服务依附在主进程上而不是独立的进程,这样在一定程度上节约了资源,另外Local服务因为是在同一进程因此不需要IPC,也不需要AIDL。相bindService会方便很多。主进程被Kill后,服务便会终止。

2、远程服务为独立的进程,对应进程名格式为所在包名加上你指定的android:process字符串。由于是独立的进程,因此在Activity所在进程被Kill的时候,该服务依然在运行,不受其他进程影响,有利于为多个进程提供服务具有较高的灵活性。该服务是独立的进程,会占用一定资源,并且使用AIDL进行IPC稍微麻烦一点。

按使用方式可以分为以下三种:

(1)startService启动的服务:主要用于启动一个服务执行后台任务,不进行通信。停止服务使用stopService;

(2)bindService启动的服务:该方法启动的服务可以进行通信。停止服务使用unbindService;

(3)startService同时也bindService启动的服务:停止服务应同时使用stepService与unbindService。

设计方法:

第一种方式:通过StartService启动Service,通过startService启动后,service会一直无限期运行下去,只有外部调用了stopService()或stopSelf()方法时,该Service才会停止运行并销毁。要创建一个这样的Service,你需要让该类继承Service类,然后重写以下方法:

(1)onCreate()
1.如果service没被创建过,调用startService()后会执行onCreate()回调;
2.如果service已处于运行中,调用startService()不会执行onCreate()方法。
也就是说,onCreate()只会在第一次创建service时候调用,多次执行startService()不会重复调用onCreate(),此方法适合完成一些初始化工作。

(2)onStartCommand()
如果多次执行了Context的startService()方法,那么Service的onStartCommand()方法也会相应的多次调用。onStartCommand()方法很重要,我们在该方法中根据传入的Intent参数进行实际的操作,比如会在此处创建一个线程用于下载数据或播放音乐等。

(3)onBind()
Service中的onBind()方法是抽象方法,Service类本身就是抽象类,所以onBind()方法是必须重写的,即使我们用不到。

(4)onDestory()
在销毁的时候会执行Service该方法。

第二种方式:通过bindService启动Service

bindService启动服务特点:
(1)bindService启动的服务和调用者之间是典型的client-server模式。调用者是client,service则是server端。service只有一个,但绑定到service上面的client可以有一个或很多个。这里所提到的client指的是组件,比如某个Activity。
(2)client可以通过IBinder接口获取Service实例,从而实现在client端直接调用Service中的方法以实现灵活交互,这在通过startService方法启动中是无法实现的。
(3)bindService启动服务的生命周期与其绑定的client息息相关。当client销毁时,client会自动与Service解除绑定。当然,client也可以明确调用Context的unbindService()方法与Service解除绑定。当没有任何client与Service绑定时,Service会自行销毁。

移动互联应用开发基础知识简答相关推荐

  1. 100个网络基础知识简答

    注:文章内容仅用于本人日常学习记录 1. 什么是局域网? 计算机在局部位置中与小物理位置的其他网络设备之间的连接. 2. 什么是以太网? 是当今现有局域网采用的最通用的通信协议标准,基于 IEEE 中 ...

  2. 计算机基础知识简答题汇总,计算机基础(简答)

    计算机基础知识 简述计算机的发展经历了那几个阶段? 人们根据计算机采用的主要元器件的不同,将电子计算机的发展分为四代: 第一代(1946年-1956年)为电子管计算机,也叫真空管计算机,其主要逻辑元件 ...

  3. IM开发基础知识补课(四):正确理解HTTP短连接中的Cookie、Session和Token

    1.前言 众所周之,IM是个典型的快速数据流交换系统,当今主流IM系统(尤其移动端IM)的数据流交换方式都是Http短连接+TCP或UDP长连接来实现.Http短连接主要用于从服务器读取各种持久化信息 ...

  4. IM开发基础知识补课(三):快速理解服务端数据库读写分离原理及实践建议

    1.前言 IM应用从服务端数据的角度来看,它是一种很特殊的应用场景,抛开基础数据.增值业务和附属功能不谈,单从IM聊天工具的立身之本--聊天数据来说,理论上是不需要在服务端存储的(或者说只需要短暂存储 ...

  5. IM开发基础知识补课:正确理解前置HTTP SSO单点登陆接口的原理

    1.前言 一个安全的信息系统,合法身份检查是必须环节.尤其IM这种以"人"为中心的社交体系,身份认证更是必不可少. 一些PC时代小型IM系统中,身份认证可能直接做到长连接中(也就是 ...

  6. iPad开发基础知识

    转载自:http://www.cocoachina.com/bbs/simple/?t82559.html iPad开发基础知识 iPad平板电脑程序开发基础规则 苹果在今天凌晨发布了10寸平板电脑: ...

  7. SP 短信开发-基础知识篇

    SP 短信开发-基础知识篇 很土的话题,但是最近帮朋友做这个东西,所以写点东西出来给初学者参考. 一.准备资料 SP开发资料网站上有很多,但是主要是以下几个文档: 1.MISC1.6 SP订购通知接口 ...

  8. iOS开发基础知识--碎片44

    iOS开发基础知识--碎片44  iOS开发基础知识--碎片44 1:App跳转至系统Settings 跳转在IOS8以上跟以下是有区别的,如果是IOS8以上可以如下设置: NSURL *url = ...

  9. IM开发基础知识补课(五):通俗易懂,正确理解并用好MQ消息队列

    1.引言 消息是互联网信息的一种表现形式,是人利用计算机进行信息传递的有效载体,比如即时通讯网坛友最熟悉的即时通讯消息就是其具体的表现形式之一. 消息从发送者到接收者的典型传递方式有两种: 1)一种我 ...

最新文章

  1. 以杨辉三角形的三种实现体会python的编程特性
  2. 【推荐】大型网站图片服务器架构的演进
  3. 央视315曝光SDK事件,应用开发者如何避坑?
  4. 怎样分析java进程占cpu_java进程占用cpu过高分析是哪些线程
  5. ASP.NET MVC3 系列教程 – Web Pages 1.0
  6. redhat6.5 升级内核
  7. ubuntu下安装英汉词典——stardict
  8. wordpress迁移以及遇到的一些问题[mysql备份导入导出][固定链接404]
  9. 尚硅谷前端视频总结(一)
  10. python入门心得_python学习心得:如何入门
  11. keil生成bin文件
  12. mic in和line in
  13. 制造业案例 | 美创助力纳爱斯集团三层业务安全审计实践
  14. nyoj-34-韩信点兵
  15. 计算机图形学基础如何学,计算机图形学基础思考
  16. Codeforces B. Dubious Cyrpto (枚举 / 模拟) (Round #657 Div.2)
  17. matlab中模型预测控制工具箱中m文件optimizer代码里面有个built in kalman 的选项
  18. 涵林同学21浙工大计算机考研心路历程(非正经、无干货)
  19. STM32之串口的使用
  20. dell服务器卡在启动界面_dell服务器系统开机提示错误解决方法

热门文章

  1. Java项目:智能点餐推荐系统(java+SSM+JSP+BootStrap+Mysql)
  2. 搜狗输入法截屏工具的使用
  3. Sentry 企业级数据安全解决方案 - Relay 操作指南
  4. 关于Sigmoid函数
  5. 解决下载软件老是附带流氓软件的下载问题
  6. 修改若依微服务版遇到的的问题
  7. 学习HTTP协议——《图解HTTP》
  8. 华为公司如何开好经营分析会(战略落地的核心抓手)?
  9. 高等数学一:函数与极限二:对数列极限定义的理解
  10. 洛谷P1796 汤姆斯的天堂梦【DP-数字三角形模型】【橙】