Android应用程序与Activity

Android应用程序生命周期介绍
每次程序运行时,应用程序Application类都保持实例化状态,通过扩展Application类,可完成
1)共享数据,在应用程序组件之间传递对象
2)对系统广播做出响应(如低内存)
3)管理和维护多个应用程序组件使用的资源

扩展和使用Application类
1)扩展public class MyApplication extends Application
2)将MyApplication单例化
3)在Manifest中注册,当程序运行时,MyApplication将会实例化

<application
        android:name="包名.MyApplication"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme">    

重写应用程序的生命周期事件
1)onCreate :在创建程序时调用,可以重写这个方法来实例化应用程序单态,以及创建和实例化任何应用程序状态变量或共享资源。
2)onLoweMemory:在系统处于资源贫乏状态时,具备良好行为的应用程序可以释放例外的内存

Activity的常用属性

1.Android:name 指定Activity对应的类名
2.Android:theme 指定应用什么主题
3.Android:label 设置显示的名称,一般在Launcher里面显示
4.Android:icon 指定显示的图标,在Laucher里面显示
5.Android:screenOrientation 指定当前Activity显示横竖等
6.Android:configChanges 当配置List发生修改是, 是否调用onCinfigurationChanged方法
7.Android:exported 是否允许activity被其他程序调用
8.Android:launchMode 设置Activity的启动方式standard。singleTop,singleTask和singleInstance
9.Android:WindowSoftInputMode 定义软键盘弹出的模式

Activity的生命周期

MainActivity启动流程

四、典型的生命周期

  所谓的典型的生命周期就是在有用户参与的情况下,Activity经历从创建,运行,停止,销毁等正常的生命周期过程。我们这里先来介绍一下几个主要方法的调用时机,然后再通过代码层面来验证其调用流程。
onCreate : 该方法是在Activity被创建时回调,它是生命周期第一个调用的方法,我们在创建Activity时一般都需要重写该方法,然后在该方法中做一些初始化的操作,如通过setContentView设置界面布局的资源,初始化所需要的组件信息等。
onStart : 此方法被回调时表示Activity正在启动,此时Activity已处于可见状态,只是还没有在前台显示,因此无法与用户进行交互。可以简单理解为Activity已显示而我们无法看见摆了。
onResume : 当此方法回调时,则说明Activity已在前台可见,可与用户交互了(处于前面所说的Active/Running形态),onResume方法与onStart的相同点是两者都表示Activity可见,只不过onStart回调时Activity还是后台无法与用户交互,而onResume则已显示在前台,可与用户交互。当然从流程图,我们也可以看出当Activity停止后(onPause方法和onStop方法被调用),重新回到前台时也会调用onResume方法,因此我们也可以在onResume方法中初始化一些资源,比如重新初始化在onPause或者onStop方法中释放的资源。
onPause : 此方法被回调时则表示Activity正在停止(Paused形态),一般情况下onStop方法会紧接着被回调。但通过流程图我们还可以看到一种情况是onPause方法执行后直接执行了onResume方法,这属于比较极端的现象了,这可能是用户操作使当前Activity退居后台后又迅速地再回到到当前的Activity,此时onResume方法就会被回调。当然,在onPause方法中我们可以做一些数据存储或者动画停止或者资源回收的操作,但是不能太耗时,因为这可能会影响到新的Activity的显示——onPause方法执行完成后,新Activity的onResume方法才会被执行。
onStop : 一般在onPause方法执行完成直接执行,表示Activity即将停止或者完全被覆盖(Stopped形态),此时Activity不可见,仅在后台运行。同样地,在onStop方法可以做一些资源释放的操作(不能太耗时)。
onRestart :表示Activity正在重新启动,当Activity由不可见变为可见状态时,该方法被回调。这种情况一般是用户打开了一个新的Activity时,当前的Activity就会被暂停(onPause和onStop被执行了),接着又回到当前Activity页面时,onRestart方法就会被回调。
onDestroy :此时Activity正在被销毁,也是生命周期最后一个执行的方法,一般我们可以在此方法中做一些回收工作和最终的资源释放。
下面我们通过程序来验证上面流程中的几种比较重要的情况,同时观察生命周期方法的回调时机。

启动其他Activity
//创建一个意图,用来从当前Activity跳转到另外一个Activity
Intent intent =new Intent( MainActivitythis,NextActivity.class);
//启动Activity
startActivity(intent);

Intent(意图)是一个对象,负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述
,Android系统则根据此Intent的描述,负责找到对应的组件,将Intent传递给调用的组件,并
完成组件的调用,详细部分我们后面章节在介绍。

###关闭Activity
调用Activity的finish()方法关闭当前的Activity。

说明:如果当前的Activity不是主活动,那么执行finish()方法后,将返回调它的那个Activity,否则,将返回到主屏幕中.

###返回栈
Android 中的活动是可以层叠的。我们每启动一个新的活动,就会覆盖在原活动之上,然后点击 Back 键会销毁最上面的活动,下面的一个活动就会重新显示出来。
其实Android是使用任务Task来管理活动的,一个任务就是一组存放在栈里的活动的集合,这个栈也被称作返回栈Back Stack
栈是一种后进先出的数据结构,在默认情况下,每当我们启动了一个新的活动,它会在返回栈中入栈,并处于栈顶的位置。而每当我们按下Back键或调用 finish()方法去销毁一个活动
时,处于栈顶的活动会出栈,这时前一个入栈的活动就会重新处于栈顶的位置。系统总是会显示处于栈顶的活动给用户。


  1. ###Activity传递参数
    当在一个Activity中启动另一个Activity,而这些Activity之间又经常要交换数据,这时可以通过Intent来实现,因为Intent通常被称为是两个Activity之间的信使,通过将要传递的数据保存在Intent中,就可以将其传递到另一个Activity中。Intent中可以存放基础数据和序列化后的数据类型,也可以将数据存放在Bundle中,在放Intent进行传递

说明: Bundle是一个字符串值到各种Parcelable类型的映射,用于保存要携带的数据包传递一个一个的字符
在 AndroidManifest 文件中注册
//注意;新建Activity时必须在manifest文件中注册

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值