为了账号安全,请及时绑定邮箱和手机立即绑定

谈谈Activity

标签:
Android

activity的android文档是:https://developer.android.google.cn/reference/android/app/Activity

Activity是Android提供的四大组件之一,是进行Android开发必不可少的组件.Activity是一个界面的载体,Activity则可以由各种控件组成.然而Activity也并不是那么简单.查看Activity类的源码我们就可以看到,这个类大概有六千多行代码,说明Android对Activity的处理是相当复杂的.


https://img1.sycdn.imooc.com//5c073fba0001c32e11241286.jpg

用户打开一个Activity,生命周期是oncreate()->onstart()->onResume()

按home键把actitivty放到后台,那么会执行onPause()->onStop()

如果这个时候activity再放到前台,那么会执行onRestart()->onStart()->onResume()

如果按硬件back键,执行onPause()->onStop()->onDestroy()

在activity上弹出dialog不会执行onPause()-onStop()

当你从A1界面跳转到A2界面时,生命周期的变化如下:
onCreate(A1)—>onStart(A1)—>onResume(A1)—>onPause(A1)—>onCreate(A2)—>onStart(A2)—>onResume(A2)—>onStop(A1);
此时如果在A2界面按下返回键,生命周期会的变化如下:
onPause(A2)—>onRestart(A1)—>onStart(A1)—>onResume(A1)—>onStop(A2)—onDestory(A2);
注:如果A2界面是一个透明主题的话,那么A1不会调用onStop方法

有一个常见的启动模式的面试题:SingleTop和SingleTask各自的行为:

这两个都是android的activity的加载模式

singleTop,当跳转对象位于栈顶的activity,那程序将不会生成一个新的activity实例,而是直接跳到现存于栈顶的那个activity实例

singletask只是会创建一个实例额,无论跳转对象是不是位于栈顶,程序都不会生成一个实例,如果该实例不在栈顶,将清空这个实例到栈顶的activity 

另外还有两种加载模式

  • Standard:标准的启动模式,如果需要启动一个activity就会创建该activity的实例。也是activity的默认启动模式。

  • singleInstance:如果使用singleInstance启动模式的activity在启动的时候会复用已经存在的activity实例。不管这个activity的实例是位于哪一个应用当中,都会共享已经启动的activity的实例对象。使用了singlestance的启动模式的activity会单独的开启一个共享栈,这个栈中只存在当前的activity实例对象。



点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消