Activity作为最常用的四大组件之一,也是作为与用户交互最为频繁的组件之一,今天和大家分享一下Activity的生命周期,启动模式,和基本使用
一:创建一个Activity
1.创建TestActivity继承于Activity
public class TestActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Log.e("测试打印", "onCreate");
}
@Override
protected void onStart() {
Log.e("测试打印", "onStart");
super.onStart();
}
@Override
protected void onResume() {
Log.e("测试打印", "onResume");
super.onResume();
}
@Override
protected void onPause() {
Log.e("测试打印", "onPause");
super.onPause();
}
@Override
protected void onStop() {
Log.e("测试打印", "onStop");
super.onStop();
}
@Override
protected void onDestroy() {
Log.e("测试打印", "onDestroy ");
super.onDestroy();
}
}
2.AndroidManifest.xml添加注册
<activity android:name=".TestActivity" />
二:启动当前Activity
1.启动跳转Activity
this: 当前的上下文
TestActivity.class: 需要跳转的Activity
Intent intent =new Intent(this,TestActivity.class);
startActivity(intent);
销毁当前Activity
finish()
2.Activity之间传值
**发送
Intent intent =new Intent(this,TestActivity.class);
intent.putExtra("key", true);
intent.putExtra("key2", "123");
startActivity(intent);
**接收
Intent intent=getIntent();
intent.getBooleanExtra("key",false);
intent.getStringExtra("key2");
三:生命周期
protected void onCreate(Bundle savedInstanceState):
一个 Activity 的实例被启动时调用的第一个方法。一般情况下,我们都覆盖该方法作为应用程序的一个入口点,在这里做一些初始化数据、设置用户界面等工作。大多数情况下,我们都要在这里从 xml 中加载设计好的用户界面。例如:
setContentView(R.layout.main);
protected void onStart():
该方法在 onCreate() 方法之后被调用,或者在 Activity 从 Stop 状态转换为 Active 状态时被调用。
protected void onReStart():
该方法当前界面重新启动时调用,比如另外一个界面返回此界面,第一次启动时不调用该方法
protected void onResume():
在 Activity 从 Pause 状态转换到 Active 状态时被调用。
protected void onResume():
在 Activity 从 Active 状态转换到 Pause 状态时被调用。
protected void onStop():
在 Activity 从 Active 状态转换到 Stop 状态时被调用。一般我们在这里保存 Activity 的状态信息。
protected void onDestroy():
在 Active 被结束时调用,它是被结束时调用的最后一个方法,在这里一般做些释放资源,清理内存等工作。
四:四种启动方式
**设置两种方式
1.AndroidManifest.xml添加
<activity android:name=".TestActivity"
android:launchMode="standard"/>
2.代码启动Activity时添加
Intent intent=new Intent(this,TestActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
**区别
1.standard
也就是说这种启动模式是默认的,我们平时在开发中使用最多的就是Standard模式的。
如果一个Activity的启动模式被设置成standard,那么它可以无限制的创建。你每一次通过Intent去启动这种模式的Activity都会重新创建一个。
2.singleTop
顾名思义,singleTop的意思就是“在顶部只能有一个”。
这种启动模式非常类似于standard,但是也有一些 区别:
如果在启动这种模式的Activity的时候,当前任务栈的顶端已经存在了相同的Activity,那系统就不会再创建新的,而是回调任务栈中已经存在的该Activity的onNewIntent( )方法。
3.singleTask
这种启动模式的Activity在Android系统中只允许存在一个实例。
如果系统中已经存在了该种启动模式的目标Activity,则系统并不会重新创建一个目标Activity,而是首先将持有目标Activity的整个任务栈都会被置于前台(用户可见),并且通过
4.singleInstance
这种启动模式和singleTask几乎一样,它也只允许系统中存在一个目标Activity,包括上面我们所说的SingleTask的一些特性singleInstance都有。唯一不同的是,持有目标Activity的任务栈中只能有目标Activity一个Actvitiy,不能再有别的Activity