要进行Android应用开发,需要对Android应用构造进行深入分析,Android应用程序由4个模块组成:Activity、Intent、Content Provider 、Service。当然也不是所有的应用程序都需要由这个四个部分组成的,可以根据需要进行组合,但是,每一个androi应用程序都必须在AndroidManfest.xml文件中声明使用到的这些模块。

 

     现在我们先来讲讲Activity、Intent

     1、Activity

     Activity是最基本的模块,我们称之为“”活动“,在应用程序中,一个Activity通常是一个单独的屏幕。每一个活动都被实现为一个独立的类,并从Activity基类继承而来,Activity类将会显示由视图空间组成的用户接口,并对事件作出响应。大多数应用程序都是有多个Activity组成,例如:对一个电话薄而言,一个屏幕用来显示联系人姓名,另一个屏幕用来显示联系人的详细信息等。

     这里的每一个屏幕都是一个活动,很容易从一个屏幕到另一个新的屏幕,并且完成新的活动。当一个新的屏幕打开时,前一个屏幕会暂停,并保存在历史栈中,并可以返回到历史栈中的前一个屏幕,当一个屏幕不在使用时,还可以从历史栈中删除。简单而言,Activity代表一个用户所能看到的屏幕,主要用于处理应用程序的整体性工作,例如:监听事件(按键事件,触摸事件等),为用户显示指定的View,启动其他的Activity等,所有应用的Activity都继承于android.app.activity类。该类是Android提供的继承类,其他Activity继承该父类后,通过父类实现各种功能。

    2、Intent

    Android用Intent类来实现在Activity与Activity之间的切换。在Intent的描述结构中,有个两个重要的部分:动作和动作对应的数据。典型的动作类型有MAIN、VIEW、PICK、EDIT等,而动作对应的数据则以URL的形式表示。

   通过解析各种Intent,从一个屏幕导航到另一个屏幕是很简单的,当导航时,Activity会调用startActivity(Intent myIntent)方法、然后,系统会在应用程序定义的IntentFilter中查找与Intent对应的Activity。新的Activity收到Intent之后,开始运行。当startActivity被调用时,讲触发解析myInten的动作,该机制提供两个关键好处是:

  • Activity能重复利用从其他组件中以Intent的形式产生请求
  • Activity可以在任何时候被具有相同IntentFilter的新的Activity取代

废话了那么多,下面来看看下具体例子说明两个Activity之间的切换,运行效果:当应用程序启东市显示main.xml,如(图一),当点击切换时,就切换到第二个Activity,然后也可以回到第一个Activity,就这样通过Intent可以完成最简单的两个Activity之间的切换。

(图一)

(图二)

      关键的代码如下:

/* findViewById(R.id.button1)取得布局main.xml中的button1 */ Button button = (Button) findViewById(R.id.btn); /* 监听button的事件信息 */ button.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { /* 新建一个Intent对象 */ Intent intent = new Intent(); /* 指定intent要启动的类 */ intent.setClass(IntentDemo.this, SecondActivity.class); /* 启动一个新的Activity */ startActivity(intent); /* 关闭当前的Activity */ IntentDemo.this.finish(); } });

     然后我们要从第二个Activity跳转到第一个Activity时,只需要在第二个Activity中使用同样的方法就可以跳转到第一个Activity中、

     在本例中我们使用了两个Activity,所以一定要在AndroidManifest.xml文件中声明,如下:

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