Android学习之路 Activity 和 Fragment 生命周期
2018-04-04 09:28
274 查看
Android Activity Fragment 生命周期理解 一 Activity生命周期 Activity声明周期的组成 onCreate onStart onResume onPause onStop onDestory onRestart (1)onCreate 创建Activity回调,一个Activity生命周期内只会调用一次 (2)onStart 启动Activity时回调,在onRestart()调用后也会调用onStart (3)onResume 恢复Activity时回调,在onStart后一定会调用该方法 (4)onPause 当Activity失去焦点时,或被一个新的非全屏的Activity,或被一个透明的Activity放置在栈顶时, Activity就转化为Paused状态。但我们需要明白,此时Activity只是失去了与用户交互的能力, 其所有的状态信息及其成员变量都还存在,只有在系统内存紧张的情况下,才有可能被系统回收掉。 (5)onStop 当Activity被另一个Activity完全覆盖时调用(即另一个Activity已经处于处于栈顶可以与用户完成交互时), 或者退出程序时调用。 (6)onDestroy 销毁Activity时调用,和onCreate方法一样,该方法也只会调用一次,标志该Activity生命周期的结束 引用官方文档的Activity生命周期流程图该流程图完成的展示了一个Activity从启动到销毁的流程。下面来代码来验证流程:
下面的程序定义了两个Activity(MainActivity , TestActivity),在MainActivity的布局文件中定义一个Button用
来启动TestActivity,然后重写Activity的生命周期回调函数,在回调函数中用日志Log来记录被调用的过程。其中
MainActivity日志以“Activity”开头 ,TestActivity以“Test”开头.
布局文件就一个Button 和一个onClick事件监听方法BtnOnClickListener,不再列出布局文件代码
MainActivity代码:
public class MainActivity extends AppCompatActivity { final static String TAG = "ACTIVITY" ; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.d(TAG , "Activity oncreate"); } @Override protected void onResume() { super.onResume(); Log.d(TAG , "Activity onresume"); } @Override protected void onStart() { super.onStart(); Log.d(TAG , "Activity onstart"); } @Override protected void onPause() { super.onPause(); Log.d(TAG , "Activity onpause"); } @Override protected void onStop() { super.onStop(); Log.d(TAG , "Activity onStop"); } @Override protected void onDestroy() { super.onDestroy(); Log.d(TAG , "Activity onDestory"); } @Override protected void onRestart() { super.onRestart(); Log.d(TAG , "Activity onrestart"); } public 9530 void BtnOnClickListener(View view ) { //在MainActivity中启动TestActivity Intent intent = new Intent() ; intent.setClass(MainActivity.this , TestActivity.class) ; startActivity(intent); } }TestActivity代码:
public class TestActivity extends Activity { final static String TAG = "TEST" ; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TextView textView = new TextView(this) ; textView.setText("测试文本"); textView.setTextSize(30); setContentView(textView); Log.d(TAG , "TEST oncreate"); } @Override protected void onResume() { super.onResume(); Log.d(TAG , "TEST onresume"); } @Override protected void onStart() { super.onStart(); Log.d(TAG , "TEST onstart"); } @Override protected void onPause() { super.onPause(); Log.d(TAG , "TEST onpause"); } @Override protected void onStop() { super.onStop(); Log.d(TAG , "TEST onStop"); } @Override protected void onDestroy() { super.onDestroy(); Log.d(TAG , "TEST onDestory"); } @Override protected void onRestart() { super.onRestart(); Log.d(TAG , "TEST onrestart"); } }启动观察:
此时点击Button按钮,进入TestActivity
点击返回到MainActivity有:
分析得到:
1 自然启动过程 创建onCreate(只在创建的时候调用一次)----->启动onStart(在Stop后Restart可再此进入该步骤)-------> 恢复onResume(在Pause后恢复时再此调用)------->运行状态>2 自然退出过程暂停onPause()-------->停止onStop()-------->销毁onDestory()-------->结束>
相关文章推荐
- Activity和Fragment生命周期
- Android之Activity,Fragment生命周期探知
- 安卓 Activity Fragment 生命周期
- Android Fragment---与Activity生命周期的协调
- Android Fragment——与Activity生命周期的协调
- Fragment的生命周期以及与Activity生命周期联动
- Fragment,activity 生命周期
- Android Fragment---与Activity生命周期的协调
- Android中Activity、Fragment与Service的生命周期
- Activity与Fragment联合生命周期
- 三张图让你高速明确activity与fragment生命周期的异同点
- Fragment与Activity的生命周期
- Lifecycle Activity和Fragment生命周期感知组件 LifecycleObserver
- Android初级教程 - Activity 与 Fragment生命周期
- android面试之Activity跟Fragment的生命周期
- [完整版]Activity生命周期、Fragment生命周期
- Activity与Fragment的生命周期
- Android - 数据库自动更新,横竖屏切换,系统控件样式,Fragment添加到Activity,Fragment生命周期,缓存,获取/清除缓存
- activity和fragment的生命周期
- Fragment and activity的生命周期对比和区别