Android基础-四大组件之Activity

Activity是Android的关键性组件,是应用程序的重要组成部分,是用于处理用户与屏幕的交互的组件。本文是对Activity相关的一些基础知识的总结。

1. Activity的使用

  相信所有在刚开始学习Android开发的同学,最先开始接触的就是Activity。使用Activity的基本流程:创建继承自Activity的子类->重写需要用到的生命周期函数->在onCreate中调用setContentView()函数设置用户UI->在AndroidManifest中声明该Activity。更加具体的Activity使用这里不再赘述。

2. Activity的生命周期

  Activity的启动、显示是由Android系统在特定阶段调用相关生命周期函数实现的。Activity的生命周期由Android系统中AMS进行调控,应该避免直接调用生命周期函数,Activity的生命周期主要分为如下三个周期:

  • 完整生命周期:从调用onCreate()到调用onDestroy()为完整生命周期,Activity在创建时调用onCreate(),在销毁时调用onDestroy()。
  • 可视生命周期:从调用onStart()到调用onStop()为可视生命周期,在Activity可见时调用onStart(),在不可见时调用onStop()。这个周期内Activity始终显示在屏幕上。
  • 交互生命周期:从调用onResume()到调用onPause()为交互生命周期,在Activity进入可交互状态时调用onResume(),在不可交互时调用onPause(),周期内Activity可以与用户进行交互。该周期内可频繁的从恢复和暂停状态切换。

Activity生命周期

3. Activity的状态保存

  当系统内存过低时可能会出现销毁Activity的情况,这个时候Activity对象也会被销毁,系统无法让其状态保存完好,在用户返回Activity时就会重新创建Activity对象。因此,在这种情况下,为了保存Activity的重要信息,需要重写onSaveInstanceState()函数。系统在销毁Activity前会先调用onSaveInstanceState()函数,系统传递一个Bundle对象到该函数,我们可以使用putString()和putInt()等方法以键值对的方式保存相关的状态信息。当再一次启动该Activity时,系统会重建该Activity并将之前保存的Bundle对象传递到onCreate函数和onRestoreInstanceState()函数中,从而使得我们可以从Bundle中提取到之前Activity销毁前的状态、并恢复。除了使用系统提供的Bundle方式,我们也可以使用文件保存等方式保存状态。

4. Activity的启动模式

  Activity有四种启动模式:standard、singleTop、singleTask、singleInstance,通过在AndroidMainifest中设置android:launchMode属性值来设定每个Activity的启动模式。

  • standard: Android创建Activity时的默认模式,每次都会创建新的实例这种模式下可以有多个相同的实例,允许多个相同的Activity叠加,
  • singleTop: 可以有多个实例,但是同一个Task栈内不允许相同Activity叠加,即如果Activity在栈顶的时候就复用该实例,否则创建新的实例。
  • singleTask: 在同一个Task栈内只能有一个实例,如果栈内不存在该Activity实例,则创建一个新的实例,若存在实例则会把该栈内在他之上的Activity出栈,把该Activity移动到栈顶,调用其onNewIntent方法复用该实例。
  • singleInstance:在整个系统中都只有一个实例,并且独立运行在一个task栈内,栈内只能有这一个是实例。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值