Android四大组件之Activity Life Cycle

来源:互联网 发布:网络架空地板价格 编辑:程序博客网 时间:2024/05/16 10:59

每创建一个activity就要在清单文件中,添加进去。

创建activity方式:

①写一个类继承自activity

主启动项:

<intent-filter>

         <action android:name="android.intent.action.MAIN"/>

<categoryandroid:name="android.intent.category.LAUNCHER" />

</intent-filter>

Activity栈:

切换屏幕时保存数据的两种办法:

①在配置文件中给activity添加该属性android:configChanges="orientation|keyboardHidden|screenSize"//不让重新执行生命周期

如果需要屏幕切换,该怎么处理布局文件:

在res下创建layout-land文件夹。

在里面创建对应的横屏布局文件(布局文件名必须一模一样。)

Activtiy跳转执行流程:

A:onPause---B:onCreate---B:onStart---B:onResume ----A:onStop

 

Activity跳转;

两种方式:

①Intent intent = new Intent(当前activity对象,目标activity镜像);

startActivity(intent);

②startActivityForResult

onCreate:activity第一次创建时调用,只调用一次,除非activity再次启动,即执行了onDestroy或者程序进程被kill,onCreate表明一次activity生命周期的开始。onDestroy表明一次activity生命周期结束。onCreate执行完后总是执行的是onStart方法:Always followed by onStart().。

onStart:

onResume:初始化一些因突发问题,存储的数据,执行完该方法当前activity就会位于栈顶。

onPause:不管生命周期怎么变化,都执行,在该方法中可以做数据备份,防止突发情况造成用户不良体验。

onSaveInstanceState:如果在该方法中做了操作,则会保存数据

onStop():当上一个activity被压入栈中或finsh()时,会执行该方法。例如:电话,跳转,压栈

onDestroy:生命周期结束,或者栈中只有一个activity时,按退出(finsh())或者返回。将会执行.可以做一些资源回收,并且执行完该方法activity就会从栈中移除。

总结:

①一个完整activity的生命周期至少执行一次onCreate()→onStart()→onResume()→运行中→onPause()→onStop()→onDestroy

②一次activity生命周期onCreate()方法和onDestroy()方法只执行一次。

③界面跳转时生命周期变化:A跳转到B

跳转后上个activity没有被finsh(),即将activity压入activity栈中:

A:onPause()→B:onCreate()→B:onStart()→B:onResume()→A:onStop()

跳转后上个activity没有被finsh():

A:onPause()→B:onCreate()→B:onStart()→B:onResume()→A:onStop()→A:onDestroy()

④横竖屏切换时生命周期变换:同一个activity

onPause()→ onStop()→onDestroy()→ onCreate()→onStart()→onResume()

注:屏幕切换其实就是另一个activity生命周期的开始。

⑤生命周期延长后必须执行的方法:

onResume():不管生命周期怎么变化,都执行,在该方法中可以做备份数据填充,改善用户体验。

 At this point the activity is at the top of the activitystack, with user input going to it.

onPause():不管生命周期怎么变化,都执行,在该方法中可以做数据备份,防止突发情况造成用户不良体验。

⑥如果重写了onSaveInstanceState()

onPause()→onSaveInstanceState()→ onStop()


1 0
原创粉丝点击