博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android面试题总结(不定期更新、附答案)
阅读量:5872 次
发布时间:2019-06-19

本文共 1333 字,大约阅读时间需要 4 分钟。

1.Activity的启动模式?

activity一共有4种启动模式:standard、singleTop singleTask 、singleInstance

standard:(标准模式)默认的就是这种启动模式 ,每次都会new一个activity的实例

singleTop: (栈顶复用模式)该模式会判断需要启动的activity是否位于栈顶,如果不是位于栈顶的话会重新实例化一个activity,可能或出现一个任务栈里面出现多个相同的activity。

singleTask:(栈内复用模式)singleTask启动模式启动Activity时,首先会根据taskAffinity去寻找当前是否存在一个对应名字的任务栈,不设置的话为默认的包名。

     不存在任务栈 ----->新建任务栈,实例化activity并且入栈。

     存在任务栈----->判断任务栈中有否有该activity的实例

            有实例---->则将它上面的Activity实例都出栈,然后回调启动的Activity实例的onNewIntent方法 

            没有实例--->实例化一个activity并且入栈。

singleInstance:(全局唯一模式)整个手机操作系统只有一个实例,不同的应用去打开这个activity公用同一个activity。

 

2.什么是ANR?如何避免?

ANR:Android Not Responsing(安卓无响应),因为Android activity默认响应时间是5s,broadcast10s,超过时间就会出现弹框提示。

ANR产生的主要原因是在ui线程中执行了耗时的操作。主线程阻塞开辟子线程去执行耗时操作,cpu满负荷,io阻塞的话也是开辟子线程,内存泄漏的话需要具体原因具体分析。

 

3.Android消息异步处理的有几种方式?

两种:1.handler+Thread     2.AsyncTask(本质也是第一种)

 

4.如何保证service不被杀死?

提高进程的优先级,降低进程被杀死的概率。

  • 利用activity提升优先级,监控手机锁屏解锁事件,在屏幕锁屏时启动1个像素的 Activity,在用户解锁时将 Activity 销毁掉。注意该 Activity 需设计成用户无感知。
  • 利用 Notification 提升权限,Android 中 Service 的优先级为4,通过 setForeground 接口可以将后台 Service 设置为前台 Service,使进程的优先级由4提升为2,从而使进程的优先级仅仅低于用户当前正在交互的进程,与可见进程优先级一致,使进程被杀死的概率大大降低。

在进程被杀死的同时进行拉活。

  • onDestroy方法里重启service:service +broadcast 方式,就是当service走ondestory的时候,发送一个自定义的广播,当收到广播的时候,重新启动service;
  • 注册高频率广播接收器,唤起进程。如网络变化,解锁屏幕,开机等。

 

 

 

转载于:https://www.cnblogs.com/hxchaoshuai/p/9242434.html

你可能感兴趣的文章
查看当前Linux系统的发行版本命令详解
查看>>
memadmin
查看>>
我的友情链接
查看>>
centos7 配置虚拟交换机(物理交换机truck端口设置)(使用brctl)
查看>>
有软件开发,就要有软件测试!
查看>>
fpm打包
查看>>
框架会使程序员变笨吗?
查看>>
让你的大脑安静下来
查看>>
全面质量管理
查看>>
配置管理小报110221:在linux上用真实帐号发mail的方法
查看>>
数据库(一)
查看>>
iPhone和SSH
查看>>
idea如何设置类头注释和方法注释
查看>>
XML解析:PULL解析
查看>>
SVN服务搭建
查看>>
美国政府在将Web业务赶出美国
查看>>
深度学习Caffe 入门理解使用教程
查看>>
nginx绑定IP的坑
查看>>
PSR-0规范
查看>>
网络基础指令
查看>>