阿里程序员的2019Android年终盘点,必备技能知识点,程序员必须收藏

  • 时间:
  • 浏览:1
  • 来源:uu快3大小_uu快3网站_开奖历史

23.zip 中不建议允许../../file 那末 的路径,可能性被篡改目录行态,造成攻击。

说明:当 zip 压缩包中允许处于"../"的字符串,攻击者能不到利用多个"../"在解压时改变 zip 文件存放的位置,当文件可能性处于是就会进行覆盖,可能性覆盖掉的文件是 so、dex 可能性 odex 文件,还要可能性造成严重的安全疑问。

12.对于内部管理使用的组件,显示设置组件的"android:exported"属性为 false。

说明:

Android 应用使用 Intent 机制在组件之间传递数据,可能性应用在使用 getIntent(),

getAction(),Intent.getXXXExtra()获取到空数据、异常可能性畸形数据时那末进行异

常捕获,应用就会处于 Crash,应用不可使用(本地拒绝服务)。恶意应用可通过向

受害者应用发送此类空数据、异常可能性畸形数据从而使应用产生本地拒绝服务。

26.Android WebView 组件加载网页处于证书认证错误时,采用默认的避免最好的办法handler.cancel(),停止加载疑问页面。

说明:

Android WebView 组件加载网页处于证书认证错误时,会调用 WebViewClient 类的

onReceivedSslError 最好的办法,可能性该最好的办法实现调用了 handler.proceed()来忽略该证书

错误,则会受到上边人攻击的威胁,可能性导致 隐私泄露。

10.不须广播敏感信息,不到在本应用使用 LocalBroadcast,避免被别的应用收到,可能性 setPackage 做限制。

Android架构视频+BAT面试专题PDF+学习笔记​

一、Java 语言规范

二、Android 资源文件命名与使用三、Android 基本组件四、UI 与布局五、多多线程 运行运行、多多线程 运行与消息通信六、文件与数据库七、Bitmap、Drawable 与动画八、安全九、许多

【Android进阶学习视频】、【全套Android面试秘籍】点击领取:Android架构视频+BAT面试专题PDF+学习笔记

【Android开发核心知识点笔记】

在 ListView,ViewPager,RecyclerView,GirdView 等组件中使用图片时,应做好图片的缓存,避免始终持有图片导致 内存泄露,也避免重复创建图片,引起

16.将所还要动态加载的文件放置在 apk 内部管理,或应用私有目录中,可能性应用还要要把所加载的文件放置在可被许多应用读写的目录中(比如 sdcard),建议对不可信的加载源进行详细性校验和白名单避免,以保证不被恶意代码注入。

15.在有强依赖 onAnimationEnd 回调的交互时,如动画播放完毕都都能否 操作页面 , onAnimationEnd 可 能 会 因 各 种 异 常 没 被 回 调 , 建 议 加 上 超 时 保 护 或 通 过 postDelay 替 代

onAnimationEnd。

多多线程 运行池不允许使用 Executors 去创建,不要 不要 通过 ThreadPoolExecutor 的最好的办法,那末 的避免最好的办法让写的同学更加明确多多线程 运行池的运行规则,规避资源耗尽的风险。

不须在 Activity#onDestroy()内执行释放资源的工作,同类许多工作多多线程 运行的

25.加密算法:使用不安全的 Hash 算法(MD5/SHA-1)加密信息,处于被破解的风险,建议使用 SHA-256 等安全性更高的 Hash 算法。

在这里小编分享一份当时人收录分发上述技术体系图相关的几十套腾讯、头条、阿里、美团等公司19年的面试题,把技术点分发成了视频和PDF(实际上比预期多花了不少精力),中含 知识脉络 + 诸多细节,可能性篇幅有限,这里以图片的形式给我们我们 歌词 展示一次要。

Log 的 tag 不到是" "。

其它控件的缩写推荐使用小写字母并用下划线进行分割,同类:

ProgressBar 对应的缩写为 progress_bar

DatePicker 对应的缩写为 date_picker

【 推 荐 】 禁 止 在 多 进 程 之 间 用 SharedPreferences 共 享 数 据 , 虽 然 可 以

10.尽量不须使用 AnimationDrawable,它在初始化的过后就将所有图片加载到内存中,不得劲占内存,或者还不到释放,释放过后下次进入再次加载都会报错。

说明:

Android 的帧动画能不到使用 AnimationDrawable 实现,或者可能性你的帧动画中可能性

中含 不要 帧图片,一次性加载所有帧图片所导致 的内存消耗会使低端机处于 OOM

异常。帧动画所使用的图片要注意降低内存消耗,当图片比较大时,容易出先 OOM。

被继承的 setRetainInstance(),导致 在 Fragment 重建时多次触发不还要的逻

至此,本篇已现在开使,如有不对的地方,欢迎您的建议与指正。同时期待您的关注,感谢您的阅读,谢谢!

10.使用 ARGB_565 代替 ARGB_888,在不为什么我降低视觉效果的前提下,减少内存占用。

说明:

android.graphics.Bitmap.Config 类中关于图片颜色的存储最好的办法定义:

17.除非 min API level >=17,请注意 addJavascriptInterface 的使用。

说明:

API level>=17,允许 js 被调用的函数还要以@JavascriptInterface 进行注解,或者

不受影响; 对于 API level < 17,尽量不须使用 addJavascriptInterface,可能性一定

要用,那末:

27.直接传递命令字可能性间接避免有敏感信息或操作时,避免使用 socket 实现,使用都都能否 控制权限校验身份的最好的办法通讯。

12.对于只用于应用内的广播,优先使用 LocalBroadcastManager 来进行注册

和发送,LocalBroadcastManager 安全性更好,同时拥有更高的运行时延。

说明:

对于使用 Context#sendBroadcast()等最好的办法发送全局广播的代码进行提示。可能性该广

播仅用于应用内,则能不到使用 LocalBroadcastManager 来避免广播泄漏以及广播被

拦截等安全疑问,同时相对全局广播本地广播的更高效。

Activity 间的数据通信,对于数据量比较大的,避免使用 Intent + Parcelable

13.当前Activity的onPause最好的办法执行现在开使后才会执行下有另一两个Activity的onCreate最好的办法,不要 不要 在 onPause 最好的办法中不适合做耗时较长的工作,这会影响到页面之间的跳

转时延。

14.使用 Intent Scheme URL 还要做过滤。

说明:

可能性浏览器支持 Intent Scheme Uri 语法,可能性过滤不当,那末恶意用户可能性通过浏

览器 js 代码进行许多恶意行为,比如盗取 cookie 等。可能性使用了 Intent.parseUri

函 数 , 获 取 的 intent 必 须 严格过滤, intent 为宜中含

addCategory(“android.intent.category.BROWSABLE”) , setComponent(null) ,

setSelector(null)3 个策略。

21.Android APP 在 HTTPS 通信中,验证策略还要改成严格模式。说明:Android APP 在 HTTPS 通信中,使用 ALLOW_ALL_HOSTNAME_VERIFIER,表示允许和

所有的 HOST 建立 SSL 通信,这会处于上边人攻击的风险,最终导致 敏感信息可能性会被劫持,以及许多形式的攻击。

通过修改 canvas 位置或者调用 invalidate(int l, int t, int r, int b)等最好的办法限定刷新

Activity#onSaveInstanceState()最好的办法还要 Activity 生命周期最好的办法,不要 不要 保证

可能性加载本地 html,应该会 HTML 内置在 APK 中,以及对 HTML 页面进行详细

对于多多线程 运行员来说,要学习的知识内容、技术有不要 不要 ,要想不被环境淘汰就不到不断提升当时人,从来还让你 们我们 歌词 去适应环境,而还要环境来适应我们我们 歌词 !

18.使用 Android 的 AES/DES/DESede 加密算法时,不须使用默认的加密模式ECB,应显示指定使用 CBC 或 CFB 加密模式。

说明:

加密模式 ECB、CBC、CFB、OFB 等,其中 ECB 的安全性较弱,会使相同的铭文

在不同的过后产生相同的密文,容易遇到字典攻击,建议使用 CBC 或 CFB 模式。

Activity 间通过隐式 Intent 的跳转,在发出 Intent 过后还要通过 resolveActivity

首次进入新启动多多线程 运行运行的页面都会有延时的疑问(有可能性黑屏、白屏几秒,是白

如非还要,避免使用嵌套的 Fragment。

12.谨慎使用 gif 图片,注意限制每个页面允许同时播放的 gif 图片,以及单个gif 图片的大小。

RGB_565 代表 16 位 RGB 位图。

避免在 BroadcastReceiver#onReceive()中执行耗时操作,可能性有耗时工作,

20.对于不还要使用 File 协议的应用,禁用 File 协议,显式设置 webView.getSettings().setAllowFileAccess(false),对于还要使用 File 协议的应用,禁止 File

协议调用 JavaScript,显式设置 webView.getSettings().setJavaScriptEnabled(false)。

15.密钥加密存储可能性经过变形避免后用于加解密运算,切勿硬编码到代码中。

说明:

多多线程 运行运行在加解密时,使用硬编码在多多线程 运行中的密钥,攻击者通过反编译拿到密钥可

以轻易解密 APP 通信数据。

10.大分辨率图片(单维度超过 10000)大分辨率图片建议统一贴到 xxhdpi 目录下管理,或者将导致 占用内存成倍数增加。

说明:

为了支持多种屏幕尺寸和密度,Android 为多种屏幕提供不同的资源目录进行适配。

为不同屏幕密度提供不同的位图可绘制对象,可用于密度特定资源的配置限定符(在

下面详述) 包括 ldpi(低)、mdpi(中)、 hdpi(高)、xhdpi(超高)、xxhdpi (超

超高)和 xxxhdpi(超超超高)。同类,高密度屏幕的位图应使用 drawable-hdpi/。

根据当前的设备屏幕尺寸和密度,可能性寻找最匹配的资源,可能性将高分辨率图片放

入低密度目录,可能性造成低端机加载过大图片资源,又可能性造成 OOM,同时也是资

源浪费,那末必要在低端机使用大图。

正例:

将 144 * 144 的应用图标 PNG 文件贴到 drawable-xxhdpi 目录

反例:

将 144 * 144 的应用图标 PNG 文件贴到 drawable-mhdpi 目录

16.当 View Animation 执行现在开使时,调用 View.clearAnimation()释放相关资源。

10.一个劲使用显式 Intent 启动可能性绑定 Service,且不须为服务声明 Intent Filter,

保证应用的安全性。可能性觉得还要使用隐式调用,则可为 Service 提供 Intent Filter

并从 Intent 中排除相应的组件名称,但还要搭配使用 Intent#setPackage()最好的办法设置

Intent 的指定包名,那末 能不到充分消除目标服务的不挑选性。

16.使用 Adapter 的过后,可能性你使用了 ViewHolder 做缓存,在 getView()的

最好的办法中无论这项 convertView 的每个子控件算是还要设置属性(比如某个 TextView

设置的文本可能性为 null,某个按钮的背景色为透明,某控件的颜色为透明等),都需

要为其显式设置属性(Textview 的文本为空也还要设置 setText(""),背景透明也还要

设置),或者在滑动的过程中,可能性 adapter item 复用的导致 ,会出先 内容的显示错

乱。

11.不须把敏感信息打印到 log 中。

说明:

在 APP 的开发过程中,为了方便调试,通常会使用 log 函数输出许多关键流程的信

息,你你這個信息中通常会中含 敏感内容,如执行流程、明文的用户名密码等,这会让

攻击者更加容易的了解 APP 内部管理行态方便破解和攻击,甚至直接获取到有价值的敏

感信息。

【Android高级进阶知识点总结】

17.Activity可能性 Fragment 中动态注册BroadCastReceiver 时,registerReceiver()

和 unregisterReceiver()要成对出先 。

说明:

可能性 registerReceiver()和 unregisterReceiver()不成对出先 ,则可能性导致 可能性注册的

receiver 那末在为宜的时机撤出 ,导致 内存泄漏,占用内存空间,加重 SystemService

负担。

次要华为的机型会对 receiver 进行资源管控,单个应用注册不要 receiver 会触发管

控模块抛出异常,应用直接崩溃。

Activity 的生命周期不对应,可能性出先 多次 onResume 造成 receiver 注册多个,但

最终只撤出 有另一两个,其余 receiver 产生内存泄漏。

应用内多多多线程 运行运行时,Application 实例化多次,还要考虑各个模块算是都还要在所

新建多多线程 运行时,还要通不要 多线程 运行池提供(AsyncTask 可能性 ThreadPoolExecutor

19.不须使用 loopback 来通信敏感信息。

10.可能性 ContentProvider 管理的数据存储在 SQL 数据库中,应该避免将不受信任的内部管理数据直接拼接在原始 SQL 的话中,可使用有另一两个用于将 ? 作为可替换参

数的挑选子句以及有另一两个单独的挑选参数数组,会避免 SQL 注入。

14.不须在 Android 的 Application 对象中缓存数据。基础组件之间的数据共享

请使用 Intent 等机制,也可使用 SharedPreferences 等数据持久化机制。

11.不到使用 ScrollView 邮邮寄包裹 ListView/GridView/ExpandableListVIew;可能性以都会把 ListView 的所有 Item 都加载到内存中,要消耗巨大的内存和 cpu 去绘制图面。

说明:

ScrollView 中嵌套 List 或 RecyclerView 的做法官方明确禁止。除了开发过程中遇到

的各种视觉和交互疑问,你你這個做法对性能还要较大损耗。ListView 等 UI 组件自身有

垂直滚动功能,也那末必要在嵌套一层 ScrollView。目前为了较好的 UI 体验,更贴

近 Material Design 的设计,推荐使用 NestedScrollView。

添 加 Fragment 时 , 确 保 FragmentTransaction#commit() 在

在 Activity 中显示对话框或弹出浮层时,尽量使用 DialogFragment,而非

还有 高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料 帮助我们我们 歌词 学习提升进阶,也节省我们我们 歌词 在网上搜索资料的时间来学习,都都能否 不到分享给身边好友同时学习。

多多多线程 运行操作写入数据库时,还要使用事务,以免出先 同步疑问。

说明:

Android 的通过 SQLiteOpenHelper 获取数据库 SQLiteDatabase 实例,Helper 中会

自动缓存可能性打开的 SQLiteDatabase 实例,单个 App 中应使用 SQLiteOpenHelper

的单例模式确保数据库连接唯一。可能性 SQLite 自身是数据库级锁,单个数据库操作

是保证多多线程 运行安全的(不到同时写入),transaction 时一次原子操作,或者处于事务中

的操作是多多线程 运行安全的。

若同时打开多个数据库连接,并通不要 多多线程 运行写入数据库,会导致 数据库异常,提示

数据库已被锁住。

遵循《阿里巴巴 Java 开发手册》手册,下载地址

Android 基本组件指 Activity、Fragment、Service、BroadcastReceiver、

ContentProvider 等等。

11.谨慎使用 Android 的多多多线程 运行运行,多多多线程 运行运行觉得都都能否 降低主多多线程 运行运行的内存压力,或者遇到如下疑问:

在还要时刻刷新某一区域的组件时,建议通过以下最好的办法避免引发全局 layout

14.根据设备性能,挑选性开启比较复杂动画,以实现有另一两个整体较优的性能和体验;

13.应用发布前确保 android:debuggable 属性设置为 false。

布局中不得不使用 ViewGroup 多重嵌套时,不须使用 LinearLayout 嵌套,改用 RelativeLayout,能不到有效降低嵌套数。

11.Service 还要以多多多线程 运行来并发避免多个启动请求,建议使用 IntentService,

可避免各种比较复杂的设置。

说明:

Service 组件一般运行主多多线程 运行,应当避免耗时操作,可能性有耗时操作应该在 Worker

多多线程 运行执行。 能不到使用 IntentService 执行后台任务。

避免使用隐式 Intent 广播敏感信息,信息可能性被许多注册了对应

24.开放的 activity/service/receiver 等还要对传入的 intent 做合法性校验。

通过设置有另一两个算是允许 requestLayout 的变量,或者重写控件的 requestlayout、

避免在 Service#onStartCommand()/onBind()最好的办法中执行耗时操作,可能性确

合的形式构建绘图。

文本大小使用单位 dp,view 大小使用单位 dp。对于 Textview,可能性在文字大小挑选的情况报告下推荐使用 wrap_content 布局避免出先 文字显示不全的适配问

13.大图片资源不须直接打包到 apk,能不到考虑通过文件仓库远程下载,减小包体积。

22.Android5.0 过后安全性要求 较高的应用 应该使 用 window.setFlag

(LayoutParam.FLAG_SECURE) 禁止录屏。

CachedThreadPool 和 ScheduledThreadPool : 允 许 的 创 建 线 程 数 量 为

临近年末,回顾总结2019,不要 不要 从事Android开发的我们我们 歌词 仍然遇到了不要 不要 困难,无法实现突破。



本文旨在通过以下知识点总结 希望能帮助上述陷入移动开发困境的我们我们 歌词 。

不要 不要 接下来本篇文章主要介绍 Android 开发中的次要知识点,本文节选自阿里巴巴开发手册,下载地址。文末还有 高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资源 帮助我们我们 歌词 学习提升进阶,也节省我们我们 歌词 在网上搜索资料的时间来学习,都都能否 不到分享给身边好友同时学习,通过阅读本篇文章,您将收获以下内容:

当多多线程 运行员容易,当有另一两个优秀的多多线程 运行员是还要不断学习的,从初级多多线程 运行员到高级多多线程 运行员,从初级架构师到资深架构师,可能性走向管理,从技术经理到技术总监,每个阶段都还要掌握不同的能力。早早挑选当时人的职业方向,都都能否 在工作和能力提升中甩开同龄人。

15.使用 Toast 时,建议定义有另一两个全局的 Toast 对象,那末 能不到避免连续显示

Toast 时不到撤出 上一次 Toast 消息的情况报告(可能性你有连续弹出 Toast 的情况报告,避免

使用 Toast.makeText)。

FixedThreadPool 和 SingleThreadPool : 允 许 的 请 求 队 列 长 度 为