activity切换生命周期,mainactivity是什么

activity生命周期(这就足够了) android开发已经概括了四年多了。 接触到的知识点也很零散。 在这里记录一下android端的知识点,之后会更容易复习。 什么不够,如果错了,我们欢迎。

活动活动从开始到结束的四种状态。 活动生命周期。 活动进程优先级。 activity的四种状态对于activity的四种状态:

running-poused-stopped-killed

running-当前显示在任务堆栈顶部屏幕的activity中且对用户可见的状态。 poused-用户仍然可以看到,但界面已失去焦点,此Activity无法与用户交互。 stopped-用户看不到当前界面,也无法与用户交互,完全覆盖。 killed-放弃当前接口,等待在存在四种activity状态的生命周期回收此系统:

从上图中可以看出:

starting ——running执行的生命周期顺序oncreate (-onstart-on resume ) ) ) ) )。

当前称为活动状态(Running ),该activity位于任务堆栈的顶部,可以与用户进行交互。

由Running ——Paused执行的Activity生命周期的onPause (

现在称为暂停状态(Paused ),该Activity虽然失去了焦点,但还是可见的状态(包括部分可见的状态)。

Paused ——Running执行:OnResume ()的生命周期

返回到当前活动状态。 在这种情况下,用户将操作home键并返回到当前的activity界面。

Paused ——Stoped运行的生命周期为:onStop (

如果此Activity完全被另一个Activity覆盖,则无法看到此Activity,因此系统经常会因内存不足而强制终止此Activity。

Stoped——killed是:onDestroy (

此Activity将被系统丢弃。 如果Activity处于暂停或停止状态,则在任何地方都可能死亡。 这是因为系统可能会因内存不足而强制终止Activity。

注:由于系统内存不足,系统可能会在“Paused (开机)”状态下直接被系统杀死。

activity生命周期oncreate()-onstart()-onResume()-onRestart()-onPouse()-onStop()-onDestory()

上图总结了android生命周期的各个阶段,并显示了从activity生成到销毁的过程。

oncreate(:

单击activity时,将调用activity的oncreate ()方法。 此方法初始化当前布局的setContentLayout ()方法。

onstart(:

onCreate ) )方法完成后,此时activity将进入onStart ) )方法。 当前的activity对用户可见,但没有焦点,无法与用户交互。 通常,当前方法可以执行一些动画初始化操作。

原始(: )

onStart ) )方法完成后,activity将进入onResume ) )方法,其中当前activity的状态为运行状态(Running ),可以与用户进行交互。

onPouse () )

如果另一个activity复盖当前activty,则当前activity将进入onPouse ()方法。 显示当前的activity,但无法与用户进行交互。

onStop () )

onPouse ) )方法完成后,此时activity将进入onStop ) )方法。 此时,用户看不到activity,如果系统内存紧张,则可能会被系统回收。 所以,一般可以用现在的方法进行资源回收。

onDestory () )

onStop () )方法完成后,activity将立即进入(onDestory ) )方法并退出当前activity。

onRestart () )

当用户按下on restart (home ),然后再次进入当前activity时,调用此方法。 顺序onPouse ()-onStop ()-onRestart ()-onStart ()-onResume () )。

注:aactivity切换BActivity时执行的方法:

activity:oncreate(-onstart )-on resume (on pouse ) )

BActivity:onCreate ()-onstart (on resume ) )。

a

Activity:onStop()->onDestory()

当AActivity切换BActivity(此activity是以dialog形式存在的)所执行的方法:

AActivity:onCreate()->onStart()->onResume()->onPouse()
BActivity:onCreate()->onStart()->onResume()

Activity中onSaveInstanceState()和onRestoreInstanceState() onSaveInstanceState(Bundle outState):

onSaveInstanceState函数在Activity生命周期中执行。
outState 参数作用 :
数据保存 : Activity 声明周期结束的时候, 需要保存 Activity 状态的时候, 会将要保存的数据使用键值对的形式 保存在 Bundle 对象中;

调用时机 :
Activity 被销毁的时候调用, 也可能没有销毁就调用了;
按下Home键 : Activity 进入了后台, 此时会调用该方法;
按下电源键 : 屏幕关闭, Activity 进入后台;
启动其它 Activity : Activity 被压入了任务栈的栈底;
横竖屏切换 : 会销毁当前 Activity 并重新创建;

onSaveInstanceState方法调用注意事项 :
用户主动销毁不会调用 : 当用户点击回退键 或者 调用了 finish() 方法, 不会调用该方法;
调用时机不固定 : 该方法一定是在 onStop() 方法之前调用, 但是不确定是在 onPause() 方法之前 还是 之后调用;
布局中组件状态存储 : 每个组件都 实现了 onSaveInstance() 方法, 在调用函数的时候, 会自动保存组件的状态, 注意, 只有有 id 的组件才会保存;
关于默认的 super.onSaveInstanceState(outState) : 该默认的方法是实现 组件状态保存的;

onRestoreInstanceState(Bundle outState):

方法回调时机 : 在 Activity 被系统销毁之后 恢复 Activity 时被调用, 只有销毁了之后重建的时候才调用, 如果内存充足, 系统没有销毁这个 Activity, 就不需要调用;
– Bundle 对象传递 : 该方法保存的 Bundle 对象在 Activity 恢复的时候也会通过参数传递到 onCreate() 方法中;

activity的进程优先级。

前台进程>可见进程>service进程>后台进程>空进程

前台进程: 1.当前进程activity正在与用户进行交互。 2.当前进程service正在与activity进行交互或者当前service调用了startForground()属于前台进程或者当前service正在执行生命周期(onCreate(),onStart(),onDestory()) 3.进程持有一个BroadcostReceiver,这个BroadcostReceiver正在执行onReceive()方法 可见进程: 1. 进程持有一个activity,这个activity不再前台,处于onPouse()状态下,当前覆盖的activity是以dialog形式存在的。 2. 进程有一个service,这个service和一个可见的Activity进行绑定。 service进程: 1.当前开启startSerice()启动一个service服务就可以认为进程是一个服务进程。 后台进程: activity的onStop()被调用,但是onDestroy()没有调用的状态。该进程属于后台进程。 空进程: 改进程没有任何运行的数据了,且保留在内存空间,并没有被系统killed,属于空进程。该进程很容易被杀死。 参考:

http://blog.csdn.net/wuseyukui/article/details/48004687
http://blog.csdn.net/eclothy/article/details/24404079

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注