Android高级岗面试刷题01

1.Activity启动模式有哪些?

Activity的有四种启动模式,分别为standard,singleTop,singleTask,singleInstance。

2.如何设置Activity启动模式?

可以在 AndroidManifest.xml 配置<activity>的 android:launchMode 属性为以上四种之一即可。

3.说一说standard启动模式吧。

standard 模式是默认的启动模式,不用为<activity>配置 android:launchMode 属性即可,当然也可以指定值
为 standard。 简单理解,比如我们创建FirstActivity,里面放一个按钮,执行如下代码:
Intent intent = new Intent(FirstActivity.this, FirstActivity.class); 
startActivity(intent);

实际上会在栈中创建多个不同的FirstActivity实例。

4.说一说singleTop启动模式吧。

<activity>指定属性 android:launchMode="singleTop" ,系统就会按照 singleTop 启动模式处理跳转行为。

比如我们创建FirstActivity,里面放一个按钮,执行如下代码:

Intent intent = new Intent(FirstActivity.this, FirstActivity.class); 
startActivity(intent);

栈中只会生成一个FirstActivity实例。如果更改一下,FirstActivity跳转到SecondActivity,SecondActivity再跳转到FirstActivity,发现两个FirstActivity,因为此时FirstActivity不在栈顶。简单地说,检查栈顶,如果是同一类Activity,不在生成新的对象。

5.说一说singleTask启动模式吧。

同样例子,FirstActivity跳转到SecondActivity,SecondActivity再跳转到FirstActivity。发现FirstActivity唯一,SecondActivity不唯一,说明这种模式会将需要显示的Activity置于栈顶,其他的弹栈。

6.说一说singleInstance启动模式吧。

同样例子,修改 FirstActivity 的 launchMode="standard",SecondActivity 的 launchMode="singleInstance",FirstActivity跳转到SecondActivity,SecondActivity再跳转到FirstActivity。SecondActivity会在一个独立的栈里面,在 SecondActivity 中再次跳转到 FirstActivity,这个时 候系统会在原始栈结构中生成一个 FirstActivity 实例,然后回退两次,注意,并没有退出,而是回到了 SecondActivity, 为什么呢?是因为从 SecondActivity 跳转到 FirstActivity 的时候,我们的起点变成了 SecondActivity 实例所在的栈 结构,这样一来,我们需要“回归”到这个栈结构。

7.Activity生命周期,从A页面打开B页面,两个页面的生命周期。

分两种情况,如果是透明A页面onPause(),B页面onCreate(),onStart(),onResume()。

如果A页面不透明,A页面onPause(),onStop(),B页面onCreate(),onStart(),onResume()。

8.App启动优化怎么做?

这就是增加Application OnCreate时间的主要元凶,所以需要尽量避免在Application onCreate时同步做初始化操作。比较好的解决方案就是对三方SDK实行懒加载,不在Application OnCreate()时初始化,在真正用到的时候再去加载。

9.主线程的Looper死循环为什么不会导致ANR?(重要*****)

而且主线程Looper从消息队列读取消息,当读完所有消息时,主线程阻塞。子线程往消息队列发送消息,并且往管道文件写数据,主线程即被唤醒,从管道文件读取数据,主线程被唤醒只是为了读取消息,当消息读取完毕,再次睡眠。因此loop的循环并不会对CPU性能有过多的消耗。

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AD钙奶-lalala

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值