【移动应用开发技术】答应我我踩过的坑你别再踩了好嘛那些年社招的坑坑洼洼_第1页
【移动应用开发技术】答应我我踩过的坑你别再踩了好嘛那些年社招的坑坑洼洼_第2页
【移动应用开发技术】答应我我踩过的坑你别再踩了好嘛那些年社招的坑坑洼洼_第3页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

【移动应用开发技术】答应我,我踩过的坑你别再踩了好嘛,那些年社招的坑坑洼洼

回想起前年左右,自己去社招的时候,一连串下来问了好多现在都是历历在目。回想起以前才觉得纸上得来终觉浅,绝知此事要躬行

回想起前年左右,自己去社招的时候,一连串下来问了好多现在都是历历在目。回想起以前才觉得纸上得来终觉浅,绝知此事要躬行所有的面试题答案并不是百分百的标准,要靠你自己的感悟和有自己的想法,才能独树一帜脱颖而出的。所有仅供参考所有的都在这个PDF中有所汇总,983页花了几十个小时整理出来的。还是比较全面的有Android,Java小知识,到性能优化.线程.View.OpenCV.NDK.大厂面试,算法等等,大家可以联系我看看对自身有没有用

(更多完整项目下载。未完待续。源码。图文知识后续上传github。)可以联系我获取完整PDF(VX:m

(更多完整项目下载。未完待续。源码。图文知识后续上传github。)可以联系我获取完整PDF(VX:m注意:单元测试不适合测试复杂的UI交互事件首先要了解Java四种引用类型的场景和使用(强引用、软引用、弱引用、虛引用)因此,Java提供ReferenceQueue来处理引用对象的回收情况。当SoftReference所引用的对象被GC后,JVM会先将softReference对象添加到ReferenceQueue这个队列中。当我们调用ReferenceQueue的的poll()方法,如果这个队列中不是空队列,那么将返回并移除前面添加的那个Reference对象图片文件压缩是针对jpg和png格式的图片。我们通常会放置多套不同分辨率的图片以适配不同的屏幕,这里可以进行适当的删减。在实际使用中,只保留一到两套就足够了(保留一套的话建议保留xxhdpi,两套的话就加上hdpi),然后再对剩余的图片进行压缩(jpg采用优图压缩,png尝试采用pngquant压缩)插件化是指将APK分为宿主和插件的部分。把需要实现的模块或功能当做一个独立的提取出来,在APP运行时,我们可以动态的载入或者替换插件部分,减少宿主的规模而热修复则是从修复bug的角度出发,强调的是在不需要二次安装应用的前提下修复已知的bug。Android中常用的两种类加载器,DexClassLoader和PathClassLoader,它们都继承于BaseDexClassLoader,两者区别在于PathClassLoader只能加载内部存储目录dex/jar/apk文件。DexClassLoader支持加载指定目录(不限于内部)的dex/jar/apk文件通过给插件apk生成相应的DexClassLoader便可以访问其中的类,可分为单DexClassLoader和多DexClassLoader两种结构。原理在于通过反射将插件apk的路径加入AssetManager中并创建Resource对象加载资源,有两种处理方式:引入组件化的原因:项目随着需求的增加规模变得越来越大,规模的增大导致了各种业务错中复杂的交织在一起,每个业务模块之间,代码没有约束,带来了代码边界的模糊,代码冲突时有发生,更改一个小问题可能引起一些新的问题,牵一发而动全身,增加一个新需求,需要熟悉相关的代码逻辑,增加开发时间组件化开发流程就是把一个功能完整的App或模块拆分成多个子模块(Module),每个子模块可以独立编译运行,也可以任意组合成另一个新的App或模块,每个模块即不相互依赖但又可以相互交互,但是最终发布的时候是将这些组件合并统一成一个apk,遇到某些特殊情况甚至可以升级或者ARouter维护了一个路由表Warehouse,其中保存着全部的模块跳转关系,ARouter路由跳转实际上还是调用了startActivity的跳转,使用了原生的Framework机制,只是通过apt注解的形式制造出跳转规则,并人为地拦截跳转和设置跳转条件Hook是一种用于改变API执行结果的技术,能够将系统的API函数执行重定向(应用的触发事件和后台逻辑处理是根据事件流程一步步地向下执行。而Hook的意思,就是在事件传送到终点前截获并监控事件的传输,像个钩子钩上事件一样,并且能够在钩上事件时,处理一些自己特定的事件,例如逆向破解App)插桩是以静态的方式修改第三方的代码,也就是从编译阶段,对源代码(中间代码)进行编译,而后重新打包,是静态的篡改;而Hook则不需要再编译阶段修改第三方的源码或中间代码,是在运行时通过反射的方式修改调用,是一种动态的篡改作用:通过宽测量值widthMeasureSpec和高测量值heightMeasureSpec决定View的大小组成:一个32位int值,高2位代表SpecMode(测量模式),低30位代表SpecSize(某种测量模式下的规格大小)。三种模式:图片加载库:Fresco丶Glide、oPicasso等//animation主要用于tween动画

//根据资源得到动画

AnimationroitateAnimation=AnimationUtils.loadAnimation(this,R.anim.rotata_anim);

//播放动画完成之后,保留动画最后的状态

rotateAnimation.setFillAfter(true);

//播放动画

btnRotate.startAnimation(rotateAnimation);

//animator主要用于属性动画

objectAnimatoranimator=objectanimator.ofFloat(textview,"alpha,1f,0f,1f);

animator.setDuration(5000);

animator,start();

AnimatorSetanimatorSet=newAnimatorSet();

//移动

objectAnimatorty=objectAnimator.ofFloat(btn,"translationY",0,300);

ty.setDuration(1000);

//旋转

objectAnimatorty=objectAnimator.ofFloat(btn,"rotationY",0,1080);

//透明度

objectAnimatoralpha=objectAnimator.ofFloat(btn,"alpha",1,0,0.5f,1);

//缩放

objectAnimatorsx=objectAnimator.ofFloat(btn,"scaleX",1,0.5f);

//一起播放

//animatorSet.playTogether(items);

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论