十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
1. 期待已久的Kotlin转正:JetBrains 发布Kotlin 1.0;可以使用现代语言的先进特性开发Android ,不用忍受Java6/7了;
建网站原本是网站策划师、网络程序员、网页设计师等,应用各种网络程序开发技术和网页设计技术配合操作的协同工作。创新互联专业提供网站建设、网站制作,网页设计,网站制作(企业站、成都响应式网站建设、电商门户网站)等服务,从网站深度策划、搜索引擎友好度优化到用户体验的提升,我们力求做到极致!
2. Android新的编译工具链Jack; 跟上一点的好处差不多:可以使用Java8以及后续的Java版本开发写Android代码,不用考虑兼容性问题。
3. Android Studio 2.0 迄今为止beta7,趋于稳定,估计很快转正;Instant Run带来开发效率的提升不是一星半点。
4. 更快跟好用的模拟器,Android Emulator 2.0应该也快转正了!
5. Android Support Library更新到23.2;支持Vector Drawables!某些场景可以用SVG图代替PNG了,
华为nova 4不错的,手机参数如下:
1、屏幕:屏幕尺寸为6.4英寸,屏幕色彩为1670万色,分辨率为FHD+ 2310 x 1080 像素,屏占比为91.8%,高清大屏,玩游戏、看电影更爽。
2、拍照:后置三摄:2000万像素(主摄,F/1.8光圈)+1600万像素(超广角,F/2.2光圈)+200万像素(景深,F/2.4光圈),支持自动对焦(相位对焦/反差对焦),前置单摄:2500万像素,F/2.0光圈,支持固定焦距,拍照更清晰。
3、性能:采用EMUI9.0.1(基于Android9),搭载麒麟970,八核处理器,运行畅快无压力。
4、电池:电池容量为3750mAh(典型值),标配充电器支持9V/2A或5V/2A输出,理论充电时间约为2小时,续航更持久。
Android常见的5个布局,我想大家一定不会陌生。LinearLayout、RelativeLayout和FrameLayout也是使用频率较高的布局方式,做Android开发的一定使用过。
传统的5种布局方式:
不过我的问题并不是问面试者如何使用这些基础的布局,而是要看面试者怎么解决布局嵌套(影响性能)和屏幕适配问题。
我们都清楚Android界面的布局太复杂,嵌套层次过深,会使整个界面的测量、布局和绘制变得更复杂,对性能会造成影响。所以我们在写Layout文件时,也要尽量避免布局的嵌套层次过深的问题。
在怎么解决问题之前,我们得有一个好方法先判断当前的问题情况。Android SDK工具箱中有一个叫做Hierarchy Viewer的工具,能够在App运行时分析Layout。
注意: 在ROOT的手机,或者是安装开发版的ROM的手机可以直接使用Hierarchy Viewer。如果没有Root的手机(SDK 4.1及以上),需要在你的PC端添加一个环境变量“ANDROID_HVPROTO=ddm”。
下面列举一些面试者常使用的方式。
merge merge标签的作用是合并UI布局,使用该标签能降低UI布局的嵌套层次。
merge标签可用于两种情况:
ViewStub ViewStub标签引入的布局默认不会inflate,既不会显示也不会占用位置。 ViewStub常用来引入那些默认不会显示,只在特殊情况下显示的布局,如数据加载进度布局、出错提示布局等。
需要在使用时手动inflate:
ViewStub在一定的程度可以起到减少嵌套层次的作用,特别是很多时候我们的程序可能不需要走到ViewStub的界面。
include 将可复用的组件抽取出来并通过include标签使用,但include标签能减少布局的层次吗?
我认为不能。include主要解决的是相同布局的复用问题,它并不能减少布局的层次。
用RelativeLayout代替LinearLayout
很多人为了减少布局层次喜欢用RelativeLayout代替LinearLayout,不过可能达到的效果并不会很明显。层次是减少了,但本身RelativeLayout就会比LinearLayout性能差一点。
有一些界面,比如一个图片和一个文本的布局(ListItem常见的布局方式),可以利用TextView有drawableLeft, drawableRight等属性,完全不需要RelativeLayout或者LinearLayout布局。
传统的布局方式存在一定的缺陷,如RelativeLayout要两次测量(measure)它的子View才能知道确切的高度;如果LinearLayout布局的子View有设置了layout_weight,那么它也需要测量两次才能获得布局的高度。
相对于传统的布局方式,Android官方还推出了两种新的布局方式:ConstraintLayout和FlexboxLayout。
ConstraintLayout ConstraintLayout即约束布局,在2016年由Google I/O推出。ConstraintLayout和RelativeLayout有点类似,控件之间根据依赖关系而存在,但比RelativeLayout更加灵活。创建大型复杂的布局仍然可以使用扁平的层级(不用嵌套View Group),说的简单些就是,再复杂的界面也可以只有2层层次。
要使用ConstraintLayout需要在build.gradle中添加相关的support库:
使用ConstraintLayout可以有效的解决布局嵌套过多导致的性能问题,官方也对其渲染性能进行了优化,并且ConstraintLayout支持可视化的方式编写布局。
不过学会熟练使用ConstraintLayout会需要一点时间,但这是值得的。
FlexBoxLayout 做过前端开发(CSS方面)的同学对FlexBox一定不会陌生,最近我在做微信小程序开发时也涉及到FlexBox。FlexBox(弹性布局)是w3c在2009年提出的一种新的布局方案,解决以前那种传统css的盒模型的局限性。
Google开源了FlexboxLayout布局和前端CSS FlexBox布局具有相同的功能(肯定有不一样的地方),但已经足够在Android上改进布局的构建方式。
FlexBoxLayout可以理解成一种更高级的LinearLayout,不过比LinearLayout更加强大和灵活。如果我们使用LinearLayout布局的话,那么不同的分辨率,也许我们要重新调整布局,势必会需要跟多的布局文件放在不同的资源目录。而使用FlexBoxLayout来布局的话,它可以适应各种界面的改变(所以叫响应式布局)。
如果对前端的Flexbox不太了解的话,你还需要补一些概念,好在这些东西在网上很容易找到。
可能很多读者会觉这样的面试题是吹毛求疵,很多项目中哪有这么复杂的界面,根本就用不到这些优化措施。
可以说厉害的人,或者叫高手,可能只是比较多在意这些细节而已。在实践中的经历告诉我,很多难于解决的性能问题,并不是因为有一个影响性能的问题无法攻克,而是没有一个明显的制约因素,是有各种小问题一点一点堆积起来,最终积重难返。
所以,把细节做好,或者意识到细节的地方可能引发的问题,对我们解决问题是很有帮助的,不要浪费了让你可以成长的细节。
有需要更多Android高级进阶和面试资料的朋友可以私信我获取
1886年 法国作家维里耶德利尔·亚当(Auguste Villiers de l'Isle-Adam)的小说《未来的夏娃》(L'ève future)中出现机器人Android
1969年 贝尔实验室Ken Thompson发明Unix操作系统
1983年9月27日 理查德·斯托曼(Richard Stallman)发起成立GNU计划,自由软件诞生
1991年10月5日 林纳斯·本尼迪克·托瓦尔兹(Linus Benedict Torvalds)在Unix和GNU基础上发明Linux操作系统
1995年5月23日 Sun公司发布Java
1997年2月18日 Sun公司发布JDK1.1
1998年9月4日 Google公司成立
1998年12月8日 Sun公司发布Java1.2,分为J2SE、J2EE和J2ME三大版本
1999年4月 OTI和IBM两家公司的IDE产品开发组创建Eclipse项目
2000年5月8日 Sun公司发布Java1.3
2000年5月29日 Sun公司发布Java1.4
2001年12月 IBM宣布Eclipse开源
2002年初 安迪·鲁宾(Andy Rubin)在斯坦福大学的工程课上做了一次讲座,Google的两位创始人Larry Page和Sergey Brin也是听众
2003年10月 安迪·鲁宾(Andy Rubin)等人创建Android Inc公司
2004年4月1日 Gmail测试版上线
2004年8月19日 Google在纳斯达克上市
2004年9月30日 Sun公司发布Java5.0,三大版本更名为Java SE、Java EE和Java ME
2005年7月11日 Google以5000万美元收购Android Inc公司
2005年7月19日 Google在中国设立研发中心,李开复为大中华区总裁
2006年2月15日 Google在中国台湾成立分公司
2006年4月12日 Google宣布中文名为谷歌
2006年10月9日 Google以16.5亿美元收购YouTube
2006年12月13日 Sun公司发布Java6.0
2007年2月14日 发布Gmail
2007年10月29日 Google以2000万美元购买g.cn
2007年11月5日 发布Android Beta,与84家硬件制造商、软件开发商及电信营运商成立OHA
2008年5月23日 收购265导航
2008年8月28日 发布Android Market
2008年9月2日 发布Chrome浏览器
2008年9月7日 发射Google卫星
2008年9月23日 发布Android1.0和T-Moblie G1(HTC Dream)
2009年4月17日 发布Android1.5 Cupcake,开始用甜品命名
2009年4月20日 Oracle以74亿美元收购Sun公司
2009年9月15日 发布Android1.6 Donut
2009年10月26日 发布Android2.0 Eclair
2009年11月19日 发布Chrome OS
2010年1月6日 Google Nexus One(HTC G5)发布
2010年1月13日 Google停止关键词过滤
2010年3月23日 Google宣布退出中国大陆,服务器转移到中国香港
2010年2月4日 Android被Linux除名
2010年5月20日 发布Android2.2 Froyo、Google TV
2010年10月25日 Android Market官方认证APP达到10万个
2010年12月6日 发布Android2.3 Gingerbread、Nexus S(三星代工)和Chrome Web Store
2011年2月11日 Android Market网页版发布
2011年2月22日 发布Android3.0 Honeycomb
2011年5月10日 Google Music Beta发布
2011年7月28日 Oracle发布Java7.0
2011年8月15日 Google以125亿美元收购摩托罗拉移动
2011年10月18日 发布Android4.0 Ice Cream Sandwich和Nexus Prime(三星Galaxy Nexus)
2012年3月6日 Android Market更名为Google Play
2012年6月28日 发布Android4.1 Jelly Bean、Nexus7(华硕代工的7寸平板电脑)、Google Glass、Nexus Q
2012年8月31日 Google香港被中国大陆封杀
2012年10月30日 发布Android4.2 Jelly Bean和Nexus10(三星代工的10寸平板电脑)
2012年11月13日 发布Nexus4(LG代工)
2013年1月6日 Google Play Books发布
2013年3月14日 安迪·鲁宾(Andy Rubin)辞去Android主管一职,Chrome及应用高级副总裁桑达尔·皮查伊(Sundar Pichai)接管Android
2013年5月16日 发布Android Studio
2013年7月25日 发布Nexus7第二代(华硕代工的7寸平板电脑)
2013年11月1日 发布Android4.4 Kitkat和Nexus5(LG代工)
2014年1月14日 Google以32亿美元收购智能家居公司Nest
2014年1月30日 Google以29亿美元将摩托罗拉移动出售给联想集团
2014年3月18日 Oracle发布Java8.0
2014年3月24日 Google Now发布
2014年3月29日 Google Wear发布
2014年5月27日 Google所有服务被中国大陆屏蔽
2014年10月15日 发布Android5.0 Lollipop、Nexus6(摩托罗拉代工)、Nexus9(HTC代工的8.9寸平板电脑)和Nexus Player(华硕代工的机顶盒)
2014年10月30日 安迪·鲁宾(Andy Rubin)从Google公司离职
2014年12月8日 发布Android Studio1.0稳定版
2015年2月19日 发布Android Studio1.1
2015年2月26日 Google Play允许付费推广APP
2015年4月18日 Google所有服务改用https协议
2015年5月2日 发布Android Studio1.2
2015年5月28日 发布Android6.0 Marshmallow、Android Studio1.3
2015年8月10日 Google成为Alphabet子公司
2015年9月30日 发布Android Studio1.4、Nexus5X(LG代工)、Nexus6P(华为代工)和Pixel C(10.2寸平板电脑)
2015年11月18日 发布Android Studio1.5
2016年3月10日 发布Android7.0 开发者预览版
2016年5月18日 发布Android7.0 Nougat正式版
2016年8月14日 发布Android Studio2.0
2016年8月22日 正式推送Android 7.0 Nougat更新
2016年9月19日 发布Android Studio2.2.0.12
2016年10月4日 发布Android7.1 Nougat和Pixel XL(HTC代工)
AndroRAT
AndroRAT一词源自Android与RAT(即远程管理工具)。这款顶级黑客工具已经拥有相当长的发展历史,而且最初其实是一款客户端/服务器应用。这款应用旨在帮助用户以远程方式控制Android系统,同时从其中提取信息。这款Android应用会在系统启动完成后以服务形式开始运行。因此,如果用户并不需要与该服务进行交互。此应用还允许大家通过呼叫或者短信等方式触发服务器连接。
这款极具实用性的Android黑客应用之功能包括收集联系人、通话记录、消息以及所在位置等信息。此应用还允许大家以远程方式对接收到的消息以及手机运行状态加以监控,进行手机呼叫与短信发送,通过摄像头拍摄照片以及在默认浏览器当中打开URL等等。
github地址:AndroRAT
Hackode
Hackode是一款Android应用,其基本上属于一整套工具组合,主要面向高阶黑客、IT专家以及渗透测试人员。在这款应用当中,我们可以找到三款模块——Reconnaissance、Scanning以及Security Feed。
通过这款应用,大家可以实现谷歌攻击、SQL注入、MySQL Server、Whois、Scanning、DNS查找、IP、MX记录、DNS Dif、Security RSS Feed以及漏洞利用等功能。这是一款出色的Android黑客应用,非常适合入门者作为起步工具且无需提供任何个人隐私信息。
下载地址:Hackode
zANTI
zANTI是一款来自Zimperium的知名Android黑客套件。此软件套件当中包含多种工具,且广泛适用于各类渗透测试场景。这套移动渗透测试工具包允许安全研究人员轻松对网络环境加以扫描。此工具包还允许IT管理员模拟出一套先进黑客环境,并以此为基础检测多项恶意技术方案。
大家可以将zANTI视为一款能够将Backtrack强大力量引入自己Android设备的应用。只要登录至zANTI,它就会映射整套网络并嗅探其中的cookie以掌握此前曾经访问过的各个网站——这要归功于设备当中的ARP缓存。
应用当中的多种模块包括网络映射、端口发现、嗅探、数据包篡改、DoS以及MITM等等。
下载地址:zANTI
FaceNiff
FaceNiff是一款顶级Android黑客应用,允许大家拦截并嗅探WiFi网络流量。这款工具广泛适用于Android用户窥探他人的Facebook、Twitter以及其它社交媒体网站。这款在黑客群体中广受好评的工具能够从WiFi网络中窃取cookie,并为攻击者提供未经授权的、指向受害者账户的访问通道。
FaceNiff由Bartosz Ponurkiewicz开发完成——这位开发者同时也编写出了桌面黑客工具Firesheep for Firefox。
下载地址:FaceNiff
Droidsheep
Droidsheep是一款相当高效的黑客应用,主要作用是针对Wi-Fi网络执行安全性分析。这款应用能够劫持网络之上的Web会话,而且几乎适用于全部服务及网站。
在启动Droidsheep应用之后,它会利用一套路由机制对全部Wi-Fi网络流量进行监控与拦截,同时从活动会话当中提取概要信息。在这款应用的帮助下,我们将能够嗅探Facebook、领英、Twitter以及其它各类社交媒体账户。
DroidSheep Guard,该应用的另一个版本,能够帮助大家在网络之上检测各类ARP嗅探活动——包括由FaceNiff、Droidsheep以及其它软件实施的功能活动。
下载地址:Droidsheep
DroidBox
DroidBox是一款对Android应用进行动态分析的应用方案。在该应用的帮助下,大家可以获得极为广泛的分析结果,包括APK软件包、网络流量、短信与手机呼叫、通过不同通道获取泄露信息等等。
这款出色的Android黑客应用还使得我们能够对Android应用软件包的行为进行可视化处理。
下载地址:DroidBox
APKInspector
APKInspector应用允许大家执行逆向工程任务。在这款应用的帮助下,我们将获得图形功能与分析能力,从而对监控目标拥有更为深入的理解。这款强大的Android黑客工具能够帮助大家从任意Android应用当中获取源代码,并将DEX代码进行可视化以清除其中的信用与授权部分。
下载地址:APKInspector
Nmap
Nmap最具人气的网络扫描应用同时适用于Android操作系统。Nmap同时适用于未root与经过root之手机。如果大家身为新手Android黑客,那么这款黑客应用绝对不可或缺。
下载地址:Nmap
SSHDroid
SSHDroid是一款面向Android系统开发的SSH服务器实现方案,允许大家将自己的Android设备与PC相对接,同时运行“terminal”与“adb shell”等命令,甚至能够实现文件编辑。当我们与远程设备相连接,它还能够提供额外的安全保护机制。
这款应用提供了共享密钥验证、WiFi自动启动白名单以及扩展通知控制等功能。
下载地址:SSHDroid
*投稿作者:w85040,转载须注明来自FreeBuf黑客与极客(FreeBuf.COM)
63.8%。安卓是开源操作系统,Android手机款式多样,功能各异,能够满足不同的消费者的需求。