第五课应用程序的组件

本文深入探讨了Android应用程序中组件的交互方式,包括Activity、Intent、Service、Notification、ContentProvider等核心组件之间的通信机制,以及如何通过Intent实现跨组件间的请求与响应。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  应用程序的组件
  
  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.
  (5)Email应用程序通过ContentProvider来使用另一个录音应用程序产生的音频文件,如图中步骤7。
  (6)用户播放刚才的音频文件,并返回到了之前我们的应用程序,此时音频文件仍然会继续播放,Service将在后台工作,如图中的步骤8。
  注:并不是每个Android应用程序都必须包含这些组件,但是使用的组件需在AndroidManifest.xml文件当中声明。 1 AndroidManifest.xml 此文件是整个Android应用程序的配置文件,它负责把下面的Activity、Service等组件有机地组合在一起。 1.1 Activity Activity是应用程序的表示层。应用程序中的每个屏幕显示都通过继承和扩展基类Activity来实现。Activity利用View来实现应用程序的GUI(Graphical User Interface,图形用户界面),而我们的手机用户则直接通过GUI和应用程序做交互,如应用程序通过GUI向用户显示信息,用户通过GUI向应用程序发出指令和响应。
  一个应用当中可以包含多个Activity,Activity是通过如下代码创建。
  publicclass HelloAndroid extends Activity {//定义应用类,并继承
  /**
  * 类中的onCreate方法,程序启动时就将运行。
  */
  @Override//重写父类方法,注解编程
  publicvoid onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  }
  }
  Activity窗口的可见内容是通过View提供,View对象继续于View类。按钮、文本框、滚动条、菜单项等都是View的对象。View通过Activity.setContentView()来设置到Avtivity当中。 1.2 View 可视化控件,用于GUI页面的元素设计。 1.3 Intent Intent为异步消息激活,用于激活Activity、Service、BoradcastReceiver。 Intent在不同的组件之间传递消息,将一个组件的请求意图传给另一个组件。 1.4 Service 具有较长的生命周期且没用户界面的程序。Service与Activity运行在应用程序进程的主线程中,因此Service不会阻塞其他组件和用户界面。 1.5 Notification 当用户有没有接到的电话的时候,Android顶部状态栏里就会出现一个小图标。提示用户有没有处理的快讯,当拖动状态栏时,可以查看这些快讯。Android给我们提供了NotificationManager来管理这个状态栏。可以很轻松的完成。
  如果要添加一个Notification,可以按照以下几个步骤
  1:获取NotificationManager:
  NotificationManager m_NotificationManager=(NotificationManager)this.ge tSystemService(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(Notifica tionDemo.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、付费专栏及课程。

余额充值