每创建一个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()