第五课应用程序的组件

应用程序的组件

Android应用程序没有唯一的启动入口(java语言的main()函数入口),一个Android应用程序由多个不同的组件组合而成,组件之间通过Intent来实现通信。所有组件必须在AndroidManifest.xml文件中声明。组件包括Activity View Intent Service Notification ContentProvider

举例说明一个Android应用程序当中的两个activity是如何交互的。见下图。

1)用户通过Activity与应用程序交互,图中步骤1

2)我们的应用程序中的Activity通过Intent来向Android平台请求启动另一个能处理打开Email的应用程序,图步步骤2与步骤3

3)通过系统当中的AndroidManifest.xml中声明的IntentFilter找到能处理打开Email的应用程序,如图的步骤4和步骤5

4)用户与Email应用程序进行交互,步骤6.

5Email应用程序通过ContentProvider来使用另一个录音应用程序产生的音频文件,如图中步骤7

6)用户播放刚才的音频文件,并返回到了之前我们的应用程序,此时音频文件仍然会继续播放,Service将在后台工作,如图中的步骤8

注:并不是每个Android应用程序都必须包含这些组件,但是使用的组件需在AndroidManifest.xml文件当中声明。

1 AndroidManifest.xml

此文件是整个Android应用程序的配置文件,它负责把下面的ActivityService等组件有机地组合在一起。

1.1 Activity

Activity是应用程序的表示层。应用程序中的每个屏幕显示都通过继承和扩展基类Activity来实现。Activity利用View来实现应用程序的GUI(Graphical User Interface,图形用户界面),而我们的手机用户则直接通过GUI和应用程序做交互,如应用程序通过GUI向用户显示信息,用户通过GUI向应用程序发出指令和响应。

一个应用当中可以包含多个ActivityActivity是通过如下代码创建。

public class HelloAndroid extends Activity {//定义应用类,并继承

   /**

    * 类中的onCreate方法,程序启动时就将运行。

    */

   @Override //重写父类方法,注解编程

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

    }

}

Activity窗口的可见内容是通过View提供,View对象继续于View类。按钮、文本框、滚动条、菜单项等都是View的对象。View通过Activity.setContentView()来设置到Avtivity当中。

1.2 View

可视化控件,用于GUI页面的元素设计。

1.3 Intent

Intent为异步消息激活,用于激活ActivityServiceBoradcastReceiver Intent在不同的组件之间传递消息,将一个组件的请求意图传给另一个组件。

1.4 Service

具有较长的生命周期且没用户界面的程序。ServiceActivity运行在应用程序进程的主线程中,因此Service不会阻塞其他组件和用户界面。

1.5 Notification

当用户有没有接到的电话的时候,Android顶部状态栏里就会出现一个小图标。提示用户有没有处理的快讯,当拖动状态栏时,可以查看这些快讯。Android给我们提供了NotificationManager来管理这个状态栏。可以很轻松的完成。

如果要添加一个Notification,可以按照以下几个步骤

1:获取NotificationManager:

NotificationManager m_NotificationManager=(NotificationManager)this.getSystemService(NOTIFICATION_SERVICE);

2:定义一个Notification:

  Notification  m_Notification=new Notification();

3:设置Notification的各种属性:

//设置通知在状态栏显示的图标

m_Notification.icon=R.drawable.icon;               

//当我们点击通知时显示的内容

m_Notification.tickerText="Button1 通知内容.....";                               

通知时发出的默认声音

m_Notification.defaults=Notification.DEFAULT_SOUND;

//设置通知显示的参数

Intent   m_Intent=new Intent(NotificationDemo.this,DesActivity.class);      

PendingIntent m_PendingIntent=PendingIntent.getActivity(NotificationDemo.this, 0, m_Intent, 0);

m_Notification.setLatestEventInfo(NotificationDemo.this, "Button1", "Button1通知",m_PendingIntent );

//这个可以理解为开始执行这个通知

m_NotificationManager.notify(0,m_Notification);

4:既然可以增加同样我们也可以删除。当然是只是删除你自己增加的。

  m_NotificationManager.cancel(0);   

  这里的0是一个ID号码,和notify第一个参数0一样。

这也就完成了,添加删除工作。

1.6 ContentProvider

能将应用程序特定的数据提供给另一个应用程序使用。数据的存储方式可以是Android文件系统,也可以是SQLite数据库。其它应用程序能对数据进行读写与存储。然而,需要使用数据的应用程序并不是直接调用这组方法,而是通过调用ContentResolver对象的方法来完成。

1.7 BoradcastReceiver

BoradcastReceiver是用户接受广播通知的组件。广播是一种同时通知多个对象的事件通知机制。基自身不实现图形用户界面,但是它可以启动Activity作为响应,或者通过NotificationManager提醒用户。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值