关于Activtity必须知道的
来源:互联网 发布:淘宝推广计划怎么写 编辑:程序博客网 时间:2024/06/06 19:18
3种状态:
激活态:位于屏幕最前端
暂停态:被一个透明或半透明Activity覆盖(Dialog)
停止态:被一个Activity完全覆盖
主要接口:
onCreate:创建时
onStart:在Framework中数据结构准备完毕后
onResume:来到栈的最前端,变为激活态时
onPause:从栈的最前端切换到后台,进入暂停态时
onStop:完全不可见时
onDestory:被清除时
Acitivity生命周期:
(1)父Activity启动子Activity,子Actvity退出,父Activity调用顺序如下
AAA--> onPause() --> onStop() --> onRestart()-->onStart()--> onResume() …
(2)用户点击Home,Actvity调用顺序如下
AAA--> onPause() --> onStop() -- Maybe-->onDestroy() – Maybe
(3)调用finish(),Activity调用顺序如下
AAA--> onPause() --> onStop() -->onDestroy()
(4)在Activity上显示dialog,Activity调用顺序如下
AAA
(5)在父Activity上显示透明的或非全屏的activity,Activity调用顺序如下
AAA--> onPause()
(6)设备进入睡眠状态,Activity调用顺序如下
AAA--> onPause()
onPause和onStop的区别:
onPause用于由一个Activity转到另一个Activity、设备进入休眠状态(屏幕锁住了)、或者有dialog弹出时
onStop用于不可见的Activity(有对话框弹出时,这时底下的activity仍然可见,所以此时onStop不会被调用)
从下面的日志日志可以看出区别:
1.从FirstActivity跳到SecondActivity时
FirstAcvity---> onCreate
FirstAcvity--->onStart
FirstAcvity--->onResume
FirstAcvity--->onPause
SecondActivity--->onCreate
SecondActivity--->onStart
SecondActivity--->onResume
FirstAcvity--->onStop
现在给AndroidMainfest.xml中的SeconedActivity属性加入android:theme="@android:style/Theme.Dialog",则SeconedActivity将以对话框形式出现,不会对FirstAcvity形成遮盖.
这时的状态输出为:
FirstAcvity---> onCreate
FirstAcvity--->onStart
FirstAcvity--->onResume
FirstAcvity--->onPause
SecondActivity--->onCreate
SecondActivity--->onStart
SecondActivity--->onResume
这时FirstAcvity比完全遮盖时少调用了onStop方法.
以下两种情况下都只会触发onPause而不会触发onStop
1.一个透明的包含Dialog的Activity出现
2.按poweroff锁屏
显示一个非activity的Dialog,是不会调用onPause和onStop的,因为此Dialog属于activity
横竖屏切换时候Activity的生命周期:
不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次 (onPause -> onSaveInstanceState -> onStop ->onDestroy ->onCreate ->onStart ->onRestoreInstanceState ->onResume)
设置Activity的android:configChanges=“orientation”时,横屏一样,竖屏时只会执行一次并执行onConfigurationChanged方法
设置Activity的android:configChanges=“orientation|keyboardHidden”时,横屏、竖屏只会执行onConfigurationChanged方法
- 关于Activtity必须知道的
- 关于软件需求必须知道的事情
- 关于NoSQL,你必须知道的九件事
- 关于Hibernate必须知道的六个方面
- 关于String,你必须知道的东西!
- 你必须知道的关于tcp_keepalive 设置
- 关于 PHP7 你必须知道的五件事
- 关于NoSQL,你必须知道的九件事
- 关于BP你必须知道的十件事
- 关于meta标签,你必须知道的知道
- 写JAVA必须知道的几个关于java的特征
- 写JAVA必须知道的几个关于java的特征
- 你必须知道的关于javascript的一些问题
- 关于关键词优化的那些必须知道的事?
- 关于数据库你必须知道
- 关于手机必须知道的几件事(含SP陷阱)。
- 关于Moblin:必须知道的6个关键问题
- 关于Moblin:必须知道的6个关键问题
- 相对布局里两个按钮居最中间
- web项目启动报Error listenerStart错误
- mac使用 sublime3 保存 markdown 到evernote
- Android源码学习之ListView的复用回收机制剖析.
- 获取单个页面的所有信息
- 关于Activtity必须知道的
- UIViewAutoresizing
- Win7设置MySQL自启动的方法
- HDU 3466 Proud Merchants(01背包的应用)
- Sublime Text快捷键
- Android相对布局
- 哎呦不错哦 :)
- 问题描述 超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小
- Energy Function