0
点赞
收藏
分享

微信扫一扫

Activity详解与实现(1),跨平台移动开发题库

生态人 2022-01-24 阅读 22

@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”>

举报

相关推荐

0 条评论