Android学习六 Activity

       Activity是Android四大组件(Activity、BroadcastReceiver广播接受者、service服务,Content Provider内容提供者)之一, 一个Activity是一个应用程序组件,提供一个屏幕(页面),用户可以用来交互为了完成某项任务,例如拨号、拍照、发送email、看地图。每一个activity被给予一个窗口,在上面可以绘制用户接口。窗口通常充满屏幕,但也可以小于屏幕而浮于其它窗口之上。一个应用程序可以有多个Activity组成,当第一次启动应用程序的时候呈现给用户的那个activity通常为mainActivity。使用Activity可以实现多页面的应用程序。

一、创建一个Activity

1.1、首先创建一个类继承自Activity,并重写其中的onCreate方法。

1.2、在AndroidManifest.xml文件中配置这个Activity

<activity android:name=""></activity>
name中写你在步骤一种创建的Activity的完整类名。

1.3、在MainActivity中开启新创建的Activity。

       1.3.1、通过显示意图开启Activity(通过制定具体报名和类名开启Activity)

		// 创建一个Intent对象
		Intent intent = new Intent(this,ResultActivity.class);	
		//开启Activity
		startActivity(intent);

       1.3.2、通过隐式意图开启Activity(通过指定一组动作或数据开启Activity,需要在配置文件中配置过滤器intent-filter)

		//[1]创建意图对象  意图 :你想干一件什么事情
		Intent intent = new Intent();
		//[2]设置意图的action(动作)
		intent.setAction(Intent.ACTION_CALL);
		//[3]设置数据 data
		intent.setData(Uri.parse("tel:"+119)); //给119打电话 
		//[4]开启activity   记得加上call_phone的权限
        startActivity(intent); 
		
两种开启Activity的异同和使用情况:

(1)显示意图更为安全(因为没有配置过滤器,别人不能够通过设置动作开启)

(2)隐式意图一般用作开启系统的应用界面

(3)显示意图一般用来开启自己程序的界面

二、Activity的生命周期

oncreate 方法 当Activity第一次启动的时候调用
onDestroy 方法 当Activity销毁的时候调用

onStrat() 方法 当Activity变成可见的时候调用
onStop() 方法 当activity 不可见的时候调用

onResume()方法 当activity可以获取焦点的时候  当界面的按钮可以被点击了
onPause()方法 当失去焦点的时候调用 当按钮不了可以被点击的时候调用

onRestart()当界面重新启动的时候调用

他们的执行流程如下图:



即当Activity启动时会先调用onCreate方法,页面可见时调用onStart方法,页面获得焦点时(即可以被点击等)调用onResume方法,随后再依次取消,即页面不可被操作时调用onPause方法,不可见时调用onStop方法,销毁时调用onDestory方法。当页面有不可见变为可见时会调用onRestart方法。如果想实现一些诸如当页面可见时进行一些操作,Activity创建时进行一些操作等,直接重写上述方法即可。

三、Activity的四种启动模式

       再看四种启动模式之前,先来了解一下任务栈的概念。任务栈是用来维护Activity的,打开一个Activity就将这个Activity放入任务栈,关闭一个Activit将这个Activity从任务栈出站。我们操作的Activity永远是任务栈的栈顶的Activity,当任务栈为空时,即退出这个应用程序。 

standard

标准模式,不用配置,默认情况下就是这个模式。就是最普通的出入栈,创建一个Activity即放入栈顶,销毁就从栈中移除,会有多个相同Activity叠加。

singleTop

单一顶部模式。即当创建一个新的Activity时,如果任务栈的顶部就是这个Activity,直接启动(复用)这个Activity,不会创建新的Activity。例如A,B两个Activity,A是standard,B

为singleTop,如果按照A-B-B这样的顺序打开这两个Activity,实际打开的Activity只有A-B(即只会打开一次B)。singleTop的配置方法:在配置文件中activity节点下设置android:launchMode="singleTop"

singleTask

单一任务栈,当前的任务栈中只能有一个实例存在(只能有一个相同的Activity)。即当有一个新的Activity被创建时,去检查这个任务栈中有没有这个Activity的实例存在,如果有实例,则直接服用这个实例,并将这个实例上面的所有Activity销毁。如下所示,每个字母代表一个Activity,上面是进行的操作,下面是实际打开的Activity:

操作:C1->C2          C1->C2->C3          C1->C2->C3->C2            C1->C2->C3->C2->C3->C1             C1->C2->C3->C2->C3->C1-C2
实际:C1->C2          C1->C2->C3          C1->C2                              C1->C2->C3->C1                               C1->C2

配置方式:在配置文件中activity节点下设置android:launchMode="singleTask"

singleInstance

比较特殊的启动模式,当用这种模式启动一个Activity时,它会新建一个任务栈,这个任务栈中只允许放这一个Activity。例如一下A,B,C三个Activity,它们可以互相启动,其中A,B是标准模式(standard),C是singleInstance模式。执行A->B->C->A的操作,其中A、B在一个任务栈中(A、B、A的顺序),C单独在一个任务栈中,并且A,B所在的任务栈在前面。如果最后放入的是C,则C的任务栈在前面(先执行前面任务栈的,同任务栈先执行栈顶的)。配置方式:在配置文件中activity节点下设置android:launchMode="singleInstance"

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值