前言:笔者在面试的过程中,已经被问过不下三次,因此在这里分析一下。可能不够详细,请各位大佬多多包涵。
一、 版本对应的API 级别
API 级别:是对 Android 平台版本提供的框架 API 修订版进行唯一标识的整数值。
1 ,Android 44 API 级别是19;
2,Android 50 API 级别:21;
3,Android 51 API 级别:22;
4,Android 60 API 级别:23;
5,Android 70 API 级别:24;
6,Android 71 API 级别:25;
7,Android 80 API 级别:26;
8,Android 81 API 级别:27;
9,Android 9 API 级别:28;
10,Android 10 API 级别:29;
二、版本变更
注:只举一些常见的。
Android 44
1,文件的读写权限,长期对文件进行读写;
2,增加了webview组件;
3,打印框架,通过 WLAN、蓝牙或其他服务连接的打印机;
4,短信内容的提供,允许应用读写设备的短信和彩信;
5,NFC读取
6,沉浸式
7,透明系统状态栏
8,虚拟机的改变
Android 50
1,webview更新,增加了安全性和稳定性
2,录屏功能
3,camera2
4,多个网络连接
5,蓝牙低功耗
6,NFC增强
7,ART运行时取代了Dalvik成为平台默认设置
8,浮动窗口
Android 60
1,指纹身份认证
2,蓝牙触控笔并且改进蓝牙低功耗
3,4K显示
4,低功耗模式
5,USB连接授权与其他设备连接
6,APK验证更为严格
Android 70
1,增强了低功耗模式,可以监听到用户的行为
2,屏幕缩放
3,快速安装app
4,来电过滤
Android 80
1,自适应启动图标
2,增加了webview的安全性和稳定性
3,多显示器支持,可以一边聊天一边看视频
4,网络连接和 HTTP(S) 连接
5,蓝牙,兼容蓝牙50版本超过字节约60的限制
Android 9
1,WIFI RTT可以室内定位
2,DEX 文件的 ART 提前转换
Android 10
1,可折叠设备
2,5G网络
3,保护用户隐私
4,安全性
5,ART 优化
首先,在感官界面设计上,我们彻底迎来了Android系统的扁平化时代,新的系统不仅使用了新的配色,同时看起来也很时尚。未来我们相信包括三星的TouchWiz或LG的 Optimus自定义UI都会遵循Lollipop的新风格。此外,谷歌全面改善了原来乏味的通知中心,让原生系统也拥有了像第三方插件那样强大的功能。另外,多任务系统也加入了更多的卡片式风格,同时还有大量的其它新特性,包括64位编译器和增强电池续航能力能。目前,除了Nexus设备之外,包括摩托罗拉、HTC等都表示旗下的智能手机大部分都支持升级到Android Lollipop,相信不就的将来我们将迎来一阵升级的热潮。下面让我们一起来看看Android 50 Lollipop新增的十个最主要变化。
1、全新Material Design设计风格
Android有史来最大改变 Lollipop十大新特性
Android Lollipop全新的设计语言是受到了多种因素影响,是一种大胆的平面化创新。换句话说,谷歌希望能够让Material Design给用户带来纸张化的体验。新的视觉语言,在基本元素的处理上,借鉴了传统的印刷设计,字体版式、网格系统、空间、比例、配色、图像使用等这些基础的平面设计规范。
另外,Material Design还推崇实体隐喻理念,利用实体的表面与边缘的质感打造出视觉线索,让用户感受到真实。熟悉的触感让用户可以快速的理解、认知。在设计中可以灵活的运用物质,在符合物理规律的基础上,打造出不同的使用体验。最后是是有意义而且更合理的动态效果,为了吸引用户的注意力,以及维持整个系统的连续性体验。
2、支持多种设备
现在无论是智能手机、平板电脑、笔记本电脑、智能电视、汽车、智能手表甚至是各种家用电子产品,谷歌的Android系统已经可以在所有设备的屏幕上出现。而这一概念与微软不谋而合,之前微软也宣布将会把Windows 10打造成跨设备跨平台的统一系统,帮助自己走出困境。
3、全新的通知中心设计
Android有史来最大改变 Lollipop十大新特性
谷歌在Android Lollipop中加入了全新风格的通知系统。改进后的通知系统会优先显示对用户来说比较重要的信息,而将不太紧急的内容隐藏起来。用户只需要向下滑动就可以查看全部的通知内容。
新的通知系统另外一个很酷的新功能是在锁屏界面也可以直接查看通知消息了。不仅如此,用户还可以直接在锁屏的情况下就行回复或进入应用。另外,如果在操作手机的过程中有电话进入,也不会进行全画面切换,而是同样以弹出通知的方式告知用户。
4、支持64位ART虚拟机
Android有史来最大改变 Lollipop十大新特性
新系统不仅在视觉效果上带来了巨大的变化,Android Lollipop还在内部的性能上进行了飞跃。首先,新系统放弃了之前一直使用的Dalvik虚拟机,改用了ART模式,实现了真正的跨平台编译,在ARM、X86、MIPS等,无处不在。
ART 虚拟机编译器在内存占用及应用程序加载时间上进行了大幅提升,谷歌承诺所有性能都会比原来提升一倍。另外,对64位的支持也让ART虚拟机如鱼得水,开发者可以针对像ARM Cortex-A57这样的64位架构核心开发应用程序。Android Lollipop支持更大的寄存器,支持新的指令集,提升了内存寻址空间,未来Android智能手机将支持4GB以上的内存。
5、Project Volta电池续航改进计划
Android有史来最大改变 Lollipop十大新特性
Project Volta计划增加了新工具可以让开发者能够更容易的找出为何自己的应用程序会对电量产生比较大的影响,同时确保在执行某型任务时将手机电量的影响降至最低。首先,Battery Historian可以列出手机电量消耗的详细情况,帮助开发者识别电量消耗的原因或者是哪个硬件或任务对电池寿命的影响比较大;而Job Scheduler API则可以让开发者更容易的选择合适的时机触发电量消耗比较高的任务,避免在低电量或未完成充电时更新应用程序。
上面是针对开发者的改进,而在用户层面上,Android Lollipop增加了Battery Saver模式,这与三星和HTC上的超级省电模式有些类似。在低电量的时候系统会自动降低屏幕亮度、限制自动更换背景等功能。
6、全新的“最近应用程序”
Android有史来最大改变 Lollipop十大新特性
除了界面风格设计的改变之外,新的最近应用界面还借鉴了Chrome浏览器的理念,采用单独的标签展示方式。更重要的是,谷歌已经向开发者开放了API,所以第三方开发人员可以利用这个改进为特定的应用增加全新的功能。
7、改进安全性
Android有史来最大改变 Lollipop十大新特性
现在个人识别解锁还是一个比较新鲜的智能概念,当用户的蓝牙耳机连接到手机或平板电脑时,设备可以基于当前的位置或用户的声音自动解锁。比如当特定的智能手表出现在Android设备的附近,那么就会直接绕过锁屏界面进行操作。而Android Lollipop也增加了这种针对特定特任识别解锁的模式。换句话说,当设备没有检测到附近有可用的信任设备时,就会启动安全模式防止未授权访问。
另外,Android Lollipop还默认开启了系统数据加密功能,并且通过SELinux执行应用程序,这就意味着对于恶意软件来说,新系统变得更加安全。
8、不同数据独立保存
Android有史来最大改变 Lollipop十大新特性
谷歌表示Android Lollipop将拥有一个全新的特性,让用户通过一台设备就可以搞定所有的工作和生活娱乐活动。该特性首先将各种数据独立保存,并且让所有新数据的生成都有依据。
我们已经看到谷歌已经与三星加强了合作,包括三星的Knox安全系统同样可以像Android Lollipop一样将重要数据和其它数据分开保存。另外谷歌还允许向三星以外的Android设备提供支持。
9、改进搜索
Android有史来最大改变 Lollipop十大新特性
谷歌将新系统的搜索功能重点放在了“重新发现”上,因此这意味着Google Search将会更好的意识到用户正在做什么。比如系统会根据用户当前的位置自动过滤无关的搜索结果。
另外,当用户在进行应用搜索时,可以直接展示相似或部分提示,并且进入特定的应用程序而无需将内容全部输入。
10、新的API支持,蓝牙41、USB Audio、多人分享等其它特性
Android Lollipop还增加了多个新的API支持、蓝牙41、USB Audio外接音响及多人分享等功能。其中多人分享功能可以在用户手机丢失的情况下,使用其它Lollipop设备登录账户,从云端下载联系人、日历等资料,并且不影响其它设备的内容。
安卓50唯一的缺点就是兼容性差,bug比较多,想要稳定建议使用44
闪飞网络加速神器为你解答,请采纳或追问
安卓50系统。Android 50是Google于2014年11月13日发布的操作系统,也称安卓50系统,Android 50使用Material Design设计风格,可以直接从锁屏界面查看、回复消息,手机借给他人但不想暴露隐私时可设置来宾账户,支持多用户账户功能,优化了面部解锁功能。
Android 50 系统
使用一种新的Material Design 设计风格。从上就能看到一些全新的设计。从上看,这套设计图对 Android 系统的桌面图标及部件的透明度进行的稍稍的调整,并且各种桌面小部件也可以重叠摆放。虽然调整桌面部件透明度对 Android 系统来说并不算什么新鲜的功能,但是加入了透明度的改进。
界面加入了五彩缤纷的颜色、流畅的动画效果,呈现出一种清新的风格。采用这种设计的目的在于统一 Android 设备的外观和使用体验,不论是手机、平板还是多媒体播放器。
系统功能
谷歌将为自家的语音服务Google Now 加入一个名为 OK Google Everywhere 的全新功能。
Android 50 将会加入更多的健身功能,考虑到谷歌在发布了Android Wear,后者与智能手表及谷歌眼镜等可穿戴设备的协作应该会成为下个版本的重点功能。
整合碎片化
(传言)Google将禁止厂商基于新版 Android 进行深度定制。
系统改进
2013年5月15-17日之间举行的Google I/O大会开始前,
外界就开始纷纷猜测谷歌将在这一大会 上发布新一代Android 50。但是在2013年5月的I/O大会上谷歌没有发布Android L。[6]
2014年6月26日,谷歌开发者大会启动,作为搜索巨头,开发者会议将有着一个非常令人激动的主题发布会,那就是Android L系统的发布,新版系统将运行在64位下,并优化了对可穿戴设备甚至车载设备的支持。同时在会上我们还可能会看到Google的最新硬件设备规范,包括下一代的手机、平板、手表、Tango、模块化手机、车载系统和机顶盒产品。[5]
Android 44 中谷歌为开发者提供了两种编译模式,一种是默认的Dalvik模式,而另外一种则是ART模式。
2014年谷歌正在对Android系统进行调整,简单点说就是ART已经取代Dalvik成为默认选项。一直以来,Dalvik虚拟机背负着Android应用卡顿的罪名,原因则是应用在运行的过程中,虚拟机Dalvik通过一个叫JIT(Just-in-time)的解释器动态的进行编译并执行,这一过程也拖慢了运行效率。
与之形成鲜明对比的ART模式,则是在用户安装应用时就进行预编译操作,将原本在程序运行中时的编译动作提前到应用安装时。在省去解释代码这一过程之后,应用的运行效率会更高。
此外,有开发者往Android开源项目中提交代码时发现,ART已经取代Dalvik成为默认选项,不过Dalvik并没有被放弃,这无疑是个不错的消息,对于在2014年到来的大改版Android L来说,它的系统执行效率会更高。
谷歌公布Android L其界面相比4x的版本来说,会有更大的变化,同时该系统还会加强平板的用户体验。
Android 50系统即彻底从Dalvik转换到ART,那样iOS开发人员和其用户所引以为傲的流畅体验将不再是一个值得炫耀的东西。
Android 50还为开发者带来了5000个新API,从而让设备间更具整体感及互联性。谷歌表示,类似歌曲、照片、应用及搜索结果,都能够在各种Android设备上无缝同步,这便是Android 50想要呈现的使用体验。另外,Android 50还包括新的电池模式、多账户登录、访客模式以及通过蓝牙设备解锁等新功能。
总得来说,Android 50是继40之后的一次重大更新,谷歌也希望通过新版本,来更好地统一Android的用户体验、设备交互能力,值得期待。
1提高优先级
这个办法对普通应用而言,应该只是降低了应用被杀死的概率,但是如果真的被系统回收了,还是无法让应用自动重新启动!
2让serviceonStartCommand返回START_STICKY
通过实验发现,如果在adb shell当中kill掉进程模拟应用被意外杀死的情况(或者用360手机卫士进行清理操作),如果服务的onStartCommand返回START_STICKY,在eclipse的进程管理器中会发现过一小会后被杀死的进程的确又会出现在任务管理器中,貌似这是一个可行的办法。但是如果在系统设置的App管理中选择强行关闭应用,这时候会发现即使onStartCommand返回了START_STICKY,应用还是没能重新启动起来!
3android:persistent="true"
网上还提出了设置这个属性的办法,通过实验发现即使设置了这个属性,应用程序被kill之后还是不能重新启动起来的!
4让应用成为系统应用
实验发现即使成为系统应用,被杀死之后也不能自动重新启动。但是如果对一个系统应用设置了persistent="true",情况就不一样了。实验表明对一个设置了persistent属性的系统应用,即使kill掉会立刻重启。一个设置了persistent="true"的系统应用,在android中具有core service优先级,这种优先级的应用对系统的low memory killer是免疫的!
Android Studio是谷歌于13年I/O大会推出的Android开发环境,基于IntelliJ IDEA 类似 Eclipse ADT,Android Studio 提供了集成的Android开发工具用于开发和调试。今日谷歌发布了Android studio的10正式版,增加了包括智能代码编辑,用户界面设计工具,性能分析工具等新功能,支持Android 50平台的开发。谷歌也将推荐开发环境从Eclipse IDE调整为Android studio,还为Eclipse开发者提供了转向Android studio开发环境的指导。
Total Control 可以帮助您利用PC控制Android手机并且对屏幕进行实时监控。
通过Total Control您可以将手机的屏幕画面实时、高速传输至电脑显示器上,并且可以通过电脑对手机进行控制和操作,如:在PC屏幕上观看手机视频,通过PC键盘进行手机短信输入,通过投影仪展示和推广手机和应用,支持手机的屏幕与宏操作的录制回放。
主要特性:
1 手机即插即用连接
- 自动获取与电脑连接的所有Android手机,不需ROOT,实现即插即用
2 屏幕动态图象查看
- 在PC端屏幕上实时高速监控已连接的手机屏幕,能够利用PC查看手机上播放的视频,能够通过投影仪展示和推广手机和应用,主流Android手机上可达每秒10帧图象以上,还可以随意放大缩小翻转。
3 触摸和按键控制
- 用户可以通过点击PC屏幕来实现对手机触摸屏的控制,并且可以通过界面按钮操作手机物理按键。
4 屏幕校准
- 屏幕显示不正确时,用户可以进行屏幕校准,达到屏幕显示正确的目的。
5 录制、回放
- 对手机屏幕进行录制,在需要的时候进行重复回放。
6 宏
- 记录您对手机的操作,并可自动重复您的操作。
7 PC键盘输入
- 可以将手机上的输入转移至PC键盘,让您打字如飞。
8 快捷键设置
- 设置PC的F1~F12键,一键启动或者切换手机应用程序。
3)查看进程列表:adb shell "ps",同时也能获取到应用的UID,方式如下(不需root权限):
u0_a开头的都是Android的应用进程,Android的应用的UID是从10000开始,到19999结束,可以在Processjava中查看到(FIRST_APPLICATION_UID和LAST_APPLICATION_UID),u0_a后面的数字就是该应用的UID值减去FIRST_APPLICATION_UID所得的值,所以,对于截图这个应用进程,它是u0_a155,按前面的规制,它的UID就是155 + FIRST_APPLICATION_UID = 10155。
VSS - Virtual Set Size 虚拟耗用内存(包含共享库占用的内存)
RSS - Resident Set Size 实际使用物理内存(包含共享库占用的内存)
PSS - Proportional Set Size 实际使用的物理内存(比例分配共享库占用的内存)
USS - Unique Set Size 进程独自占用的物理内存(不包含共享库占用的内存)
一般来说内存占用大小有如下规律:VSS >= RSS >= PSS >= USS
使用 adb shell "dumpsys meminfo -s <pakagename | pid>"命令,输出结果分以下4部分:
PS:在apk内调用运行获取其他app的内存数据则需要root权限
adb命令:adb shell dumpsys gfxinfo <package | pid>
正常情况下帧率应该在1667ms左右,1秒60帧,执行结果如下:
详细计算方法如下:
还有一个命令是: adb shell dumpsys SurfaceFlinger --latency LayerName
其中LayerName在各个不同系统中获取的命令是不一样的
在Android 6系统直接就是SurfaceView
在Android 7系统中可以通过 dumpsys window windows | grep mSurface | grep SurfaceView 然后通过数据截取到
在Android 8系统中可以通过 dumpsys SurfaceFlinger | grep android包名获取到
执行命令结果如下:
计算方法比较简单,一般打印出来的数据是129行(部分机型打印两次257行,但是第一部分是无效数据,取后半部分),取len-2的第一列数据为end_time,取len-128的第一列数据为start_time
fps = 127/((end_time - start_time) / 10000000)
至于为啥要取第一列数据,这里不做过多介绍,欢迎参看这两篇文章
老罗的文章SurfaceView原理
Android性能测试之fps获取
至于为啥要处于1000000,因为命令打印出来的是纳秒单位,要转为毫秒进行计算,127就是因为命令一次打印出来127帧的数据而已
有两种方法可以获取
1) adb shell "top -n 5 | grep <package | pid>" ,第三列就是实时监控的CPU占用率(-n 指定执行次数,不需root权限),这边top命令执行需要2到3s左右,一般可以采用busybox 的top命令执行,效率会快很多
2) adb shell "dumpsys cpuinfo | grep <package | pid>"
两种方法直接区别在于,top是持续监控状态,而dumpsys cpuinfo获取的实时CPU占用率数据
adb命令:adb shell "dumpsys batterystats < package | pid>" (Android 50后引入)
获取单个应用的耗电量信息,具体返回结果待研究
adb命令:adb shell "dumpsys battery"
出现信息解读:
AC powered:false 是否连接AC(电源)充电线
USB powered:true 是否连接USB(PC或笔记本USB插口)充电
Wireless powered:false 是否使用了无线电源
status: 1 电池状态,2为充电状态,其他为非充电状态
level:58 电量(%)
scale: 100 电量最大数值
voltage: 3977 当前电压(mV)
current now: -335232 当前电流(mA)
temperature:355 电池温度,单位为01摄氏度
adb 命令:adb shell "dumpsys< package | pid> | grep UID" [通过ps命令,获取app的UID(安装后唯一且固定)]
adb shell cat /proc/uid_stat/UID/tcp_rcv [cat为查看命令,读取tcp_rcv获取应用接收流量信息(设备重启后清零)]
adb shell cat /proc/uid_stat/UID/tcp_snd [cat为查看命令,读取tcp_snd获取应用发送流量信息(设备重启后清零)]
计算流量消耗步骤:
或者还有一种方式获取应用流量消耗:
首先判断类型:
cat /sys/class/thermal/thermal_zone/type
只有红框框出来的是有效的
cat /sys/class/thermal/thermal_zone/temp
获取CPU温度
dumpsys battery | grep temperature 单位01摄氏度
获取/proc/stat文件内容(无权限限制)
总的cpu时间片是 total = user+nice+system+idle+iowait+irq+softirq
忙碌时间为 notidle = user+nice+system +iowait+irq+softirq
cpu使用率计算方法为,先取开始的total值和忙碌时间notidle,隔一段时间片,再取一次计算total2,notidle2, cpuuse = (notidle2 – notidle) 100 / (total2 - total)%
PS:由于Android 8权限收紧,在Android 8系统手机内apk内读取文件内容为空,需要shell权限才可获取文件内容,下同
读/sys/devices/system/cpu/cpuX/cpufreq/scaling_cur_freq文件的值,X不定,看是几核手机,scaling_cur_freq是否存在也不一定,需要判断
至于为啥不取cpuinfo_cur_freq文件的值,原因是android 6,7系统获取的时候,这个文件shell没有读取权限,需要root权限
参考文章: https://blogcsdnnet/long_zhimeng/article/details/45934899
Android 6,7系统可执行
dumpsys window windows | grep "mCurrentFocus"
执行结果一般为类似:
mCurrentFocus=Window{81caaa5 u0 comtencentmobileqq/comtencentmobileqqactivitySplashActivity}
按照一定规则把comtencentmobileqq提取出来即可
直接apk内读取文件即可,不需要shell权限(支持到Android8)
Gpu使用率获取:会得到两个值,(前一个/后一个)100%=使用率
adb shell cat /sys/class/kgsl/kgsl-3d0/gpubusy
Gpu工作频率:
adb shell cat /sys/class/kgsl/kgsl-3d0/gpuclk
adb shell cat /sys/class/kgsl/kgsl-3d0/devfreq/cur_freq
Gpu最大、最小工作频率:
adb shell cat /sys/class/kgsl/kgsl-3d0/devfreq/max_freq
adb shell cat /sys/class/kgsl/kgsl-3d0/devfreq/min_freq
Gpu可用频率
adb shell cat /sys/class/kgsl/kgsl-3d0/gpu_available_frequencies
adb shell cat /sys/class/kgsl/kgsl-3d0/devfreq/available_frequencies
Gpu可用工作模式:
adb shell cat /sys/class/kgsl/kgsl-3d0/devfreq/available_governors
Gpu当前工作模式:
adb shell cat /sys/class/kgsl/kgsl-3d0/devfreq/governor
欢迎分享,转载请注明来源:品搜搜测评网