Android Activity简介

1. Activity生命周期

ActivityonCreate(Bundle)开始,到onDestroy()结束。
这里写图片描述
首次打开Activity,依次调用onCraete(Bundle)onStart()onResume()
这里写图片描述
选择Home键,依次调用onPause()onStop()
这里写图片描述
再次打开Activity,依次调用onRestart()onStart()onResume()
这里写图片描述
按返回键,依次调用onPause()onStop()onDestroy()
这里写图片描述

2. Activity保存参数

如果Activity被后台关闭或者手机横竖屏切换时,都会进行参数的保存,而其他变量都将被重置。

在手机横竖屏切换时,依次调用onPause()onSaveInstanceState(Bundle)onStop()onDestroy()来关闭Activity
这里写图片描述
接着依次调用onCreate()onStart()onRestoreInstanceState(Bundle)onResume()重新打开Activity
这里写图片描述

onSaveInstanceState(Bundle)方法中,调用outState.putXX()保存数据。在onRestoreInstanceState(Bundle)方法中,调用savedInstanceState.getXX()读取保存数据。

@Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
}

@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);
}

3. 多Activity生命周期

  • Activity1打开Activity2
    Activity1调用onPuase()方法。
    Activity2依次调用onCreate(Bundle)onStart()onResume()方法。
    Activity1调用onStop()方法。
    这里写图片描述
  • Activity2返回Activity1
    Activity2调用onPause()方法。
    Activity1依次调用onRestart()onStart()onResume()方法。
    Activity2才调用onStop()onDestroy()方法。
    这里写图片描述

4. Activity启动模式

Activity一共有以下四种launchMode,可在AndroidManifest.xml中配置,默认值为"standard"

android:launchMode=“standard|singleTop|singleTask|singleInstance”

  • standard,每次都会创建一个新的Activity,并且在Task的顶部。
    这里写图片描述
  • singleTop,如果Activity在Task的顶部,依次调用该ActivityonPause()onNewIntent(Intent)onResume()方法。否则创建一个新的Activity
    这里写图片描述
  • singleTask,如果Activity在Task中,在上面的Activity都会被销毁,依次调用onNewIntent(Intent)onRestart()onStart()onResume()方法。否则创建一个新的Activity
    这里写图片描述
    如果Activity在Task的顶部,调用onPause()onNewIntent(Intent)onResume()方法,类似于singleTop
  • singleInstance,每次请求都会在新的Task中打开Activity,如果Activity已经创建,直接使用。否则就创建新的Activity。调用方法类同于singleTask但不会销毁原有Task中Activity
    这里写图片描述

注意点:

  • standard和不在顶部的singleTop都会创建一个新的实例,而在顶部的singleTopsingleTasksingleInstance不会创建新的实例。
  • stardardsingleTopsingleTask会在一个Task中,而singleInstance在不同的Task中。按Home键后重新打开App,singleInstance所在Task会消失。

5. Intent Flag

打开Activity时,可以通过在Intent中包含标志来修改Activity与当前Task的关联。

几种常用的标志:

  • FLAG_ACTIVITY_NEW_TASK,在一个新的Task中开启一个Activity
  • FLAG_ACTIVITY_SINGLE_TOP,如果打开的Activity在Task的顶部,调用该ActivityonPause()onNewIntent(Intent)onResume()方法。
  • FLAG_ACTIVITY_CLEAR_TOP,如果打开的Activity在Task中已经运行,该Activity上面的所有Activity都会被销毁(包括该Activity),然后打开新的Activity

注意点:

  • Standard模式下,FLAG_ACTIVITY_NEW_TASKFLAG_ACTIVITY_CLEAR_TOP都会创建一个新的Activity
  • 使用FLAG_ACTIVITY_SINGLE_TOP|FLAG_ACTIVITY_CLEAR_TOP的方式可以不用创建新的Activity,依次调用onNewIntent(Intent)onRestart()onStart()onResume()方法。
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值