2017过度到2018,需要整点面试题

1.Acticity和Service是否在同一个线程工作

这个问题有坑,没有绝对条件可以判定是不是在一个线程工作
同一个包内的activity和service

1)如果service没有设定属性android:process=”:remote”的话,service会和activity跑在同一个进程中,由于当前这个进程只有一个UI线程,所以,service和acitivity就是在同一个线程里面的;
2)如果设定了属性android:process=”:remote”的话,那么就是跨进程访问,但是跨进程访问有可能出现各种各样的问题

2.Activity生命周期知道吧,onStart()和onResume()的区别是什么

我们得知道这两个方法是什么意思
onStart()是activity界面被显示出来的时候执行的,用户可见,包括有一个activity在他上面,但没有将它完全覆盖,用户可以看到部分activity但不能与它交互
onResume()是当该activity与用户能进行交互时被执行,用户可以获得activity的焦点,能够与用户交互。

onStart()通常就是onStop()(也就是用户按下了home键,activity变为后台后),之后用户再切换回这个activity就会调用onRestart()而后调用onStart()
onResume()是onPause()(通常是当前的acitivty被暂停了,比如被另一个透明或者Dialog样式的Activity覆盖了),之后dialog取消,activity回到可交互状态,调用onResume()。

3.介绍下LaunchMode及其使用方式

standard 模式
这是默认模式,每次激活Activity时都会创建Activity实例,并放入任务栈中。使用场景:大多数Activity。

singleTop
只要这个Activity不在栈顶,都会创建新的实例,当然是用在各个页面都会调用的内容页面,详细页面了

singleTask
只存在一个实例,存在之后,再次跳转(复用存在的实例,并且将其置于栈顶)进来的时候,会走onNewIntent,并且会清空界面显示的数据

singleInstance
在一个新栈中创建该Activity的实例,并让多个应用共享该栈中的该Activity实例,当其存在实例的时候,再次调用的时候,也会走onNewIntent方法

详细的介绍可以看我的这篇博客activity的四种启动模式

4.ANR

在activity的关键生命周期方法里例如像onCreate()和onResume()不要进行耗时操作。潜在的耗时操作例如网络和数据库操作、复杂的耗时计算(例如:重新计算bitmap的大小)都应该放在子线程里。
产生子线程的最有效的方式用AsyncTask类。

先写到这里吧,我在整理下,续更 2017/12/27 11:51

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值