您的位置:首页 > 移动开发 > Android开发

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()-------->结束>

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: