android 四大组件之一Activity详解

一、Activity简介

Activity是用户接口程序,原则上它会提供给用户一个交互式的接口功能。

Activiy本身没有页面,Activity类创建了一个窗口,通过setContentView(View)接口吧UI放到activity创建的窗口上实现图形化。

Activity之间通过Intent通信。

android应用中每一个Activity都必须要在AndroidManifest.xml配置文件中声明,否则系统将不识别也不执行该Activity.

二、Activity的生命周期

Activity声明周期的解释

No.

方法

类型

描述

1

onCreate 

实例化

当Activity第一次启动的时候,触发该方法,完成初始化。

2

onStart 

启动

该方法的触发表示所属Activity将被展现给用户。

3

onResume 

交互

当一个Activity和用户发生交互的时候,触发该方法

4

onPause 

挂起

当一个正在前台运行的Activity因为其他的Activity需要前台运行而转入后台运行的时候,触发该方法。

5

onStop

停止

一个活动不再需要展示给用户的时候,触发该方法。如果系统内存紧张,则会直接结束这个Activity,而不会触发 onStop 方法。所以如果有要保存的数据时,应该在onPause时做,可以认为onPause方法或许是活动触发的最后的方法,之后就无法主观控制了。

6

onRestart 

重启

当处于停止状态的Activity需要再次展现给用户的时候,触发该方法。

7

onDestroy 

销毁

当Activity销毁的时候,触发该方法。和 onStop 方法一样,如果内存紧张,系统会直接结束这个Activity而不会触发该方法。

三、Activity跳转时的声明周期

第一个Activity正常启动:onCreate>onStart>onResume;

点击按钮启动第二个Activity:第一个Activity  onPause>第二个Activity  onCreate>onStaart>onResume>第一个Activity  onStop;

当从第二个Activity按返回到第一个Activity时:第二个Activity  onPause>第一个Activity  onRestart>onStart>onResume>第二个Activity  onStop>onDestroy;

四、Activity的启动模式

启动模式简单地说就是Activity启动时的策略,在AndroidManifest.xml中的标签的android:launchMode属性设置。Activity有以下四种启动模式。

(1)standard:默认的启动模式,每次激活Activity时,都创建新的Activity实例,并放入任务栈;

(2)singleTop:如果任务栈栈顶就是该Activity,则不需要创建,其余情况都要创建Activity实例;

(3)singletask:如果要激活的那个Activity在任务栈中存在该实例,则不需要创建,只需要把此Activity放入栈顶,并把该Activity以上的Activity实例都清除;

(4)singleInstance:另起一个任务栈,只存放该activity的实例。

五、Intent的隐式调用

Intent

(1)显式的Intent,即在构造Intent对象时就指定接收者,这种方式与普通的函数调用类似;

(2)隐式的Intent,即Intent的发送者在构造Intent对象时,并不知道也不关系接收者是谁,这种方式与函数调用差别比较大,有利于降低发送者和接收者之间的耦合。

Intent的使用

(1)显示调用:

Intent intent=new Intent(this,xxx.class);

startActivity(intent);

隐式调用:

Intent intent=new Intent(B带包类名);

startActivity(intent);

AndroidManifest.xml中B类Activity中加intent-filter;

<intent-filter>

  <action android:name="B带包类名"/>

<category android:name="android.intent.category.DEFAULT"/>

</intent-filter>

注:Catery类别,在隐式调用时不指定category或者指定<intent-filter>中配置的任何一个category(除  DEFAULT),就可以访问Activity.

标准Action常量:

标准CAtegory常量

Intent的隐式调用

六、Intent调用系统组件(隐式调用)

(1)Web浏览器:

Uri uri=Uri.parse("http://www.baidu.com");

Intent intent=new Intent(Intent.ACTION_VIEW,uri);

startActivity(intent);

(2)打开地图:

Uri uri=Uri.parse("geo:113.6741,341566");

Intent intent=new Intent(Intent.ACTION_VIEW,uri);

startActivity(intent);

(3)Uri uri=Uri.parse("tel"10086");

Intent intent=new Intent(Intent.ACTION_DIAL,uri);//调用拨号程序

Intent intent=new Intent(Intent.ACTION_CALL,uri);//直接拨打电话

//在配置文件中<user-permission android:name="android:permission.CALL_PHONE">(android6.0以上需要动态申请)

startActivity(intent);

猜你喜欢

转载自blog.csdn.net/u011897782/article/details/81979602