@Override
protected void onPause() {
super.onPause();
System.out.println(“onPause”);
}
@Override
protected void onStop() {
super.onStop();
System.out.println(“onStop”);
}
@Override
protected void onRestart() {
super.onRestart();
System.out.println(“onRestart”);
}
@Override
protected void onDestroy() {
super.onDestroy();
System.out.println(“onDestroy”);
}
}
四、Activity的跳转和数据传递
=============================================================================
1、显式跳转和隐式跳转
通过Intent(意图)实现Activity的显式跳转和隐式跳转
1.1 显式跳转
显式跳转有四种格式
//显式跳转
Intent intent = new Intent(this, BActivity.class);
startActivity(intent);
//显示跳转
// Intent intent = new Intent();
// intent.setClass(this, BActivity.class);
// startActivity(intent);
//通过设置setClassName实现显式跳转,需要传入完整的Activity地址
// Intent intent = new Intent();
// intent.setClassName(this, “com.example.test.jump.BActivity”);
// startActivity(intent);
//通过设置Component实现显式跳转,需要传入完整的Activity地址
// Intent intent = new Intent();
// intent.setComponent(new ComponentName(this, “com.example.test.jump.BActivity”));
// startActivity(intent);
1.2 隐式跳转
1.2.1 隐式Intent图解
1.2.1 隐式Intent实现
在通过隐式调用时,需要在AndroidManifest中设置对应Activity的action
//隐式调用
Intent intent = new Intent();
intent.setAction(“com.example.test.jump.BActivity”);
startActivity(intent);
2、Activity之间的数据传递
Activity之间数据的传递可以通过Intent中的putExtra方法传值
intent.putExtra(“szh”,1);
也可以通过实例化Bundle类,然后通过Bund的put方法设置自己想要的值,在通过putExtra方法传值
Bundle bundle = new Bundle();
bundle.putString(“name”,“szh”);
intent.putExtras(bundle);
五、Activity启动模式
=========================================================================
Activity有四种启动模式,在AndroidManifest中设置Activity的android:launchMode属性,设置Activity的启动模式。
android:launchMode属性:
-
standard:标准模式,默认
-
singleTop:Task栈顶复用模式
-
singleTask:Task栈内复用模式
-
singleInstance:全局单例模式
1、standard:
-
Activity是由任务栈管理的,每启动一个Activity,就会被放入栈中,按返回键,就会从栈顶移除一个Activity。
-
standard是默认的启动模式,即标准模式。没启动一个Activity,都会创建一个新的实例
<activity
android:name=".jump.BActivity"
android:launchMode=“standard”>
2、singleTop
- 当要启动的目标Activity已经位于栈顶时,不会创建新的实例,会复用栈顶的Activity,并且其onNewIntent方法会被调用;如果目标Activity不在栈顶,则跟standard一样创建新的实例。
<activity
android:name=".jump.BActivity"
android:launchMode=“singleTop”>
3、singleTask
- 在同一个任务栈中,如果要启动的目Activity已经在栈中,则会复用该Activity,并且该Activity上面的Activity会被清除;如果栈中没有,则创建新的实例
<activity
android:name=".jump.BActivity"
android:launchMode=“singleTask”>
4、singleInstance
- 全局复用,不管哪个Task栈,只要存在目标Activity,就复用。每个Activity占有一个新的Task栈。
<activity
android:name=".jump.BActivity"
android:launchMode=“singleInstance”>
roid.intent.category.DEFAULT" />
4、singleInstance
- 全局复用,不管哪个Task栈,只要存在目标Activity,就复用。每个Activity占有一个新的Task栈。
<activity
android:name=".jump.BActivity"
android:launchMode=“singleInstance”>