美文网首页面试题
Android面试题3(通关三)

Android面试题3(通关三)

作者: 阿迪scar | 来源:发表于2019-06-12 21:47 被阅读116次


    内存优化:

    1:如何检测内存问题:

    (1)Lint代码检查.一些常见的代码警告AndroidStudio自动Lint代码检查工具会给我们提示.

    (2)Android Monitor  在AndroidStudio中,可以通过Monitors来监控Memory、CPU、Network、GPU等。在Monitors监控中,我们可以获取内存的各种信息来分析内存泄露。

    (3)Mat  使用第三方的Mat工具来分析内存泄露,需要在官网下载独立版的Mat。

    (4)LeakCanary   LeakCanary是square开源的检测内存泄露的第三方库。它最大的有点就是开发者只需要添加简单代码,app在运行时如果发生了内存泄露,就会很直观的将内存泄露的详细信息展示在通知栏上,这样避免了Android Monitor或者Mat等工具的繁琐的分析过程。

    具体的检测步骤看这里: 转载文章

    2:内存溢出和泄漏的区别及常见内存问题,如何解决内存问题:

    内容有点多,我找了一篇不错的文章: 转载文章

    启动模式:

    1:启动模式的原理:

    standard :默认模式。在该模式下,Activity可以拥有多个实例,并且这些实例既可以位于同一个task,也可以位于不同的task。每次都会新创建。

    singleTop:栈顶模式.该模式下,在同一个task中,如果存在该Activity的实例,并且该Activity实例位于栈顶则不会创建该Activity的示例,而仅仅只是调用Activity的onNewIntent()。否则的话,则新建该Activity的实例,并将其置于栈顶。

    singleTask:单任务模式 . 顾名思义,只容许有一个包含该Activity实例的task存在。在上网的时候,遇到播放视频的链接,会通过隐式intent方式跳转来播放视频,这时候如果点击home键,再点击browser,你会发现MovieView这个类已经销毁不存在了,它不会像保存这个MovieView的类对象,给客户带来的用户体验特别的不好。就像singleTask模式的Activity不管是位于栈顶还是栈底,再次运行这个Activity时,都会destory掉它上面的Activity来保证整个栈中只有一个自己。

    singleInstance :单实例模式 . 顾名思义,是单一实例的意思,即任意时刻只允许存在唯一的Activity实例,而且该Activity所在的task不能容纳除该Activity之外的其他Activity实例。它与singleTask有相同之处,也有不同之处。 相同之处:任意时刻,最多只允许存在一个实例。 不同之处:当跳转到singleTask类型的Activity,并且该Activity实例已经存在时,会删除该Activity所在task中位于该Activity之上的全部Activity实例;而跳转到singleInstance类型的Activity,并且该Activity已经存在时, 不需要删除其他Activity,因为它所在的task只有该Activity唯一一个Activity实例。

    2:启动模式的应用场景:

    SingleTop:栈顶模式,用于浏览器的数钱和流氓网站。                        SingleTask:单任务模式,用于视频播放器的Activity和浏览器的主页面。 SingleInstance:单实例模式,用于来点页面。

    相关文章

      网友评论

        本文标题:Android面试题3(通关三)

        本文链接:https://www.haomeiwen.com/subject/pjbrfctx.html