今天 闲着没事,研究了下 Android 中 Activity 的生命周期,目前有所领悟,本次内容主要是以实践为主,图文结合哈~
一、android 中的 Activity 的活动状态,主要分为 4 中状态:
1、运行
2、暂停
3、停止
4、销毁
二、活动的声明周期
Android 中的 Activity 类中共定义了 7 个回调方法
1、onCreate()
2、onStart()
3、onResume()
4、onPause()
5、onStop()
6、onDestroy()
7、onRestart()
三、3 中生存周期
以上的 7 个方法中,除了 onRestart() 方法,其他的都是两两相对应的;
1、完整生命周期
活动在 onCreate() 和 onDestroy();
2、可见生存周期
活动在 onStart() 和 onStop()
3、前台生存周期
活动在 onResume() 和 onPause()
四、活动周期示意图:
五:身临其境
接下来我么来实战一下,需求如下:
需求:
实现一个应用中的从主界面分别跳转到其他的 2 个界面
步骤:
1、新建一个项目,命名为 ActivityLifeCyle
2、分别创建 2 个 xml 文件;normal_activity.xml 、dialog_activity.xml
3、分别创建 2 个类,NormalActivity.java 、DialogActivity.java
4、在 main_activity.xml 文件添加 2 个 button
5、在 MainActivity 中写如界面跳转动作意图 --》Intent
6、在 AndroidManifest.xml 文件中 注册 NormalActivity.java 、DialogActivity.java
主要代码如下:
1、MainActivity.java
public class MainActivity extends Activity {
public static final String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d(TAG, "onCreate");
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
Button startNormalActivity = (Button)findViewById(R.id.bt1);
Button startDialogActivity = (Button)findViewById(R.id.bt2);
startNormalActivity.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO 自动生成的方法存根
Intent intent = new Intent(MainActivity.this,NormalActivity.class);
startActivity(intent);
}
});
startDialogActivity.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO 自动生成的方法存根
Intent intent = new Intent(MainActivity.this,DialogActivity.class);
startActivity(intent);
}
});
}
@Override
protected void onStart() {
// TODO 自动生成的方法存根
super.onStart();
Log.d(TAG, "onStart");
}
@Override
protected void onRestart() {
// TODO 自动生成的方法存根
super.onRestart();
Log.d(TAG, "onRestart");
}
@Override
protected void onResume() {
// TODO 自动生成的方法存根
super.onResume();
Log.d(TAG, "onResume");
}
@Override
protected void onPause() {
// TODO 自动生成的方法存根
super.onPause();
Log.d(TAG, "onPause");
}
@Override
protected void onStop() {
// TODO 自动生成的方法存根
super.onStop();
Log.d(TAG, "onStop");
}
@Override
protected void onDestroy() {
// TODO 自动生成的方法存根
super.onDestroy();
Log.d(TAG, "onDestroy");
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
接下来,我们就开始把应用程序部署到我们真机或模拟器上,
我一开是 部署的时候,我们中 Logcat 中可以看到如下信息:
汇总图:
六:总结
以上就是一个程序的运行周期,每一个动作需要用到的那些方法,当然具体的什么是 运行、停止、暂停啊,这些原理性的东东,度娘、Google 都可以搜索的到的,这里面就没有详细的说明,不懂的或者不理解的,自行查找哈,
本例中,还有个动作没有演示,就是在 MainActivity 界面按 Home 键,此时 MainActivity 处于什么状态呢?又会调用什么方法~~~~~哈哈,看懂上面的,我就不解释啦;
源代码地址:链接:http://pan.baidu.com/s/1mgqrMdU 密码:kljd
大家,可以自己写写,或者下载上面的代码玩一玩,印象很深刻的哈~~~~~
睡觉楼,拜拜~
参考:第一行代码(Android)