4.1.3Activity的创建

在 Android 中创建一个 Activity 是很简单的事情,编写一个继承自android.app.Activity的类,并在AndroidManifest.xml文件中声明即可。下面,我们来看一个例子,我们创建一个MyActivity类继承自Activity,代码如下:

public class MyActivity extends Activity { 
@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.main); 
} 
} 

在这里,我们重写了onCreate方法,在这个方法中,我们可以进行一些初始化的工作,其中main就是layout目录下的main.xml布局文件,在这里,我们在这个布局文件中定义了一个TextView,代码如下:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent">

<TextView

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="This is Activity 1"/>

</LinearLayout>

需要注意的是,每一个Activity我们都要在AndroidManifest.xml中为它进行声明后才能使用。 AndroidManifest.xml中通过 <activity> 节点来说明 Activity,将 apk 文件安装后,系统根据这里的说明来查找读取 Activity,代码如下:

<activity android:name=". MyActivity " android:label="@string/app_name"> 
 <intent-filter> 
 <action android:name="android.intent.action.MAIN" /> 
  <category android:name="android.intent.category.LAUNCHER" /> 
 </intent-filter> 
</activity> 

需要说明的是,android.intent.action.MAIN的作用是将MyActivity设置为主Activity,即最先启动的Activity;android.intent.category.LAUNCHER的作用是决定应用程序是否显示在程序列表里。运行效果如图4-3所示:

图4-3 Activity创建

4.1.4Activity的四种加载模式

在Android的多个Activity开发中,Activity之间的跳转可能需要有多种方式:有时是普通的生成一个新实例,有时希望跳转到原来某个Activity实例,而不是生成大量的重复的Activity。加载模式便是决定以哪种方式来启动一个Activity。

在Android里,有4种Activity的启动模式,分别为:

1)standard: 标准模式,调用startActivity()方法后产生一个新的实例。

2)singleTop:如果已经有一个实例位于Activity栈的顶部时,就不产生新的实例,而只是调用Activity中的newInstance()方法。如果不位于栈顶,会产生一个新的实例。

3)singleTask:会在一个新的task中产生这个实例,以后每次调用都会使用这个,不会去产生新的实例了。

4)singleInstance:这个跟singleTask基本上是一样,只有一个区别,在这个模式下的Activity实例所处的task中,只能有这个Activity实例,不能有其它的实例。

这些启动模式可以在AndroidManifest.xml文件中<activity>的launchMode属性进行设置。

相关的代码中也有一些标志可以使用,比如我们想只启用一个实例,则可以使用 Intent.FLAG_ACTIVITY_REORDER_TO_FRONT标志。这个标志表示,如果这个Activity已经启动了,就不产生新的Activity,而只是把这个Activity实例加到栈顶来就可以了,代码如下:

Intent intent = new Intent(ReorderFour.this, ReorderTwo.class);

intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);

startActivity(intent);

-------------------------------------------- 试着放个广告 现在没工作 要生存 没办法 平安陆金所 隶属于平安集团的p2p平台 年投资回报率7%-9% 是替代银行理财的首选 个人经验教训 推荐投资安鑫或者有担保的彩虹项目 不要投资安e 那个几乎无法转让 想提前提现非常困难 注册链接 http://affiliate.lufax.com/action/36XBU 用此链接注册 你我都会有几十元的额外现金奖励 --------------------------------------------

可以看到,Activity的加载模式受启动Activity的Intent对象中设置的Flag和AndroidManifest.xml文件中Activity的<activity>元素的属性值交互控制,当它们之间有冲突的时候,Flag的优先级更高。

更多相关文章

  1. android activity 切换流程
  2. Android异常汇集----4. Android(安卓)requires compiler complia
  3. git的使用(上传项目到github)
  4. android 知识点总结 广播接收器生命周期【爱扒拉】
  5. Android调用第三方so库
  6. 通过实例解析android Activity启动过程
  7. android style用法
  8. android Application Project目录结构
  9. Android(安卓)下载模块分析(DownloadManager和DownloadProvider)

随机推荐

  1. android XMl 解析神奇xstream 四: 将复杂
  2. Android数据推送实现方案
  3. Android中String资源文件的format方法
  4. Qt for Android(安卓)调用android原生接
  5. android初级
  6. Android(安卓)开机图片/文字/动画 修改
  7. Windows Phone 7 不温不火学习之《ListBo
  8. Android震动---启动、循环、取消控制
  9. Android的ListView控件滚动时背景问题
  10. Android(一) 安卓概述