Android程序设计复习(二)

第三章 多个用户界面的程序设计

本章课程重点和难点

  • Intent组件的作用及使用方法
  • 界面之间的跳转以及传值常用的方式
  • 菜单的使用及实现过程
  • 常见对话框的使用及实现过程

3.1 页面切换与传递参数值

Activity页面切换 

Activity跳转与传递参数值主要通过Intent类协助实现。在一个Activity页面中启动另一个 Activity页面的运行,是最简单的Activity页面切换方式。其步骤如下:

1、创建一个Intent对象,其构造方法为:

  Intent intent = new Intent(当前Activity.this, 另一Activity.class);

2 、然后调用Activity的startActivity(intent)方法,切换到另一个Activity页面。

应用Intent在Activity页面之间传递数据

  • Bundle类是一个用于将字符串与某组件对象建立映射关系的组件。Bundle组件与Intent配 合使用,可在不同的Activity之间传递数据。Bundle类的常用方法如下:
  • putString(String key, String value): 把字符串用“键-值”形式存放到Bundle对象中;
  • remove(String key):移除指定key的值;
  • getString(String key):获取指定key的字符。    

菜单Menu

  • 一个菜单(Menu)由多个菜单选项组成,选择一个菜单项就可以引发一个动作事件。
  • 在Android系统中,菜单可以分为三类:选项菜单(Option Menu),上下文菜单(Context Menu)以及子菜单(Sub Menu)

选项菜单

选项菜单需要通过按下设备的Menu键来显示。当按下设备上的Menu键后,在屏幕底部(顶部)弹出一个菜单,这个菜单称作选项菜单(OptionsMenu)

方  法

说  明

onCreateOptionMenu(Menu menu)

用于初始化菜单,menu为Menu对象实例。

onPrepareOptionsMenu(Menu menu)

改变菜单状态,在菜单显示前调用。

onOptionsMenuClosed(Menu menu)

菜单被关闭时调用。

onOptionsItemSelected(MenuItem item)

菜单项被点击时调用,即菜单项的监听方法。

设计选项菜单需要用到Menu、MenuItem接口。一个Menu对象代表一个菜单,Menu对象中可以添加菜单项MenuItem对象,也可以添加子菜单SubMenu。

菜单Menu使用add(int groupId, int itemId, int order, CharSequence title) 方法添加一个菜单项。

add()方法中的四个参数,依次是:  

   (1)组别; 

   (2)Id,这个很重要,Android根据这个Id来确定不同的菜单;  

   (3)顺序,哪个菜单项在前面由这个参数的大小决定;  

   (4)文本,菜单项的显示文本。

创建选项菜单的步骤

  1. 重写Activity的onCreateOptionMenu(Menu menu)方法,当菜单第一次被打开时调用;
  2. 调用Menu的add( )方法添加菜单项(MenuItem);
  3. 重写Activity的onOptionsItemSelected(MenuItem item)方法,当菜单项(MenuItem)被选择时来响应事件。

上下文菜单

Android系统 的上下文菜单类似于 PC 上的右键菜单。当为一个视图注册了上下文菜单之后,长按(2 秒左右)这个视图对象就会弹出一个浮动菜单,即上下文菜单。 

创建一个上下文菜单的步骤

  1. 重写Activity 的 onCreateContextMenu() 方法,调用 Menu 的 add 方法添加菜单项(MenuItem)。
  2. 重写 Activity 的 onContextItemSelected() 方法,响应上下文菜单菜单项的单击事件。
  3. 调用Activity 的 registerForContextMenu() 方法,为视图注册上下文菜单。

对话框

对话框是一个有边框、有标题栏的独立存在的容器,在应用程序中经常使用对话框组件来进行人机交互。Android系统提供了四种常用对话框: 

  • AlertDialog:消息对话框; 
  • ProgressDialog:进度条对话框; 
  • DatePickerDialog:日期选择对话框; 
  • TimePickerDialog:时间选择对话框。 

设计AlertDialog对话框的步骤

1、用AlertDialog.Builder类创建对话框Builder对象

Builder dialog=new AlertDialog.Builder(Context);

2、设置对话框的标题、图标、提示信息内容、按钮等

     dialog.setTitle("普通对话框");

 dialog.setIcon(R.drawable.icon1);

 dialog.setMessage("一个简单的提示对话框");

 dialog.setPositiveButton(“确定”, new okClick());

3、创建并显示AlertDialog对话框对象

 dialog.create();

 dialog.show();

如果在对话框内部设置了按钮,还需要对其设置事件监听OnClickListener

第5章 后台服务与系统服务调用

本章重点和难点

  • 后台服务的概念、生命周期以及调用过程
  • 信息广播的原理
  • 信息广播的实现
  • 系统广播的调用

后台服务Service

Android系统的Service是一种类似于Activity的组件,但Service没有用户操作界面,也不能自己启动,其主要作用是提供后台服务调用。Service不像Activity那样,当用户关闭应用界面就停止运行,Service会一直在后台运行,除非另有明确命令其停止

通常使用Service为应用程序提供一些只需在后台运行的服务,或不需要界面的功能,例如,从Internet下载文件、控制Video播放器等。 

Service的生命周期中只有三个阶段:

onCreate, onStartCommand, onDestroy

主要方法

方  法

说  明

onCreate()

创建后台服务。

onStartCommand (Intent intent, int flags, int startId)

启动一个后台服务。

onDestroy()

销毁后台服务,并删除所有调用。

sendBroadcast(Intent intent)

继承父类Context的sendBroadcast()方法,实现发送广播机制的消息。

onBind(Intent intent)

与服务通信的信道进行绑定,服务程序必须实现该方法。

onUnbind(Intent intent)

撤销与服务信道的绑定。

Service启动和停止的方法

通常Service要在一个Activity中启动,调用Activity的startService(Intent)方法启动Service。

若要停止正在运行的Service,则调用Activity的stopService(Intent)方法关闭Service。

方法startService()和stopService()均继承于Activity及Service共同的父类android.content.Context。

Service启动和停止的要求

一个服务只能创建一次,销毁一次,但可以开始多次,即onCreate()和onDestroy()方法只会被调用一次,而onStartCommand()方法可以被调用多次。后台服务的具体操作一般应该放在onStartCommand()方法里面。

如果Service已经启动,当再次启动Service时则不调用onCreate()而直接调用onStartCommand()。

设计一个后台服务的应用程序步骤

(1)创建Service的子类:

  • 编写onCreate()方法,创建后台服务;
  • 编写onStartCommand()方法,启动后台服务;
  • 编写onDestroy()方法,终止后台服务,并删除所有调用。

(2)创建启动和控制Service的Activity:

  • 创建Intent对象,建立Activity与Service的关联;
  • 调用Activity的startService(Intent)方法启动Service后台服务;
  • 调用Activity的stopService(Intent)方法关闭Service后台服务。

(3)修改配置文件AndroidManifest.xml:

  • 在配置文件AndroidManifest.xml的标签中添加如下代码:

信息广播机制Broadcast 

  1. Broadcast是Android系统应用程序之间传递信息的一种机制。当系统之间需要传递某些信息时,不是通过诸如单击按钮之类组件来触发事件,而是由系统自身通过系统调用来引发事件。这种系统调用是由BroadcastReceiver类的实现的,把这种系统调用称为广播。
  2. BroadcastReceiver也就是“广播接收者”的意思,顾名思义,它就是用来接收来自系统和应用中的广播信息。

发出一个广播消息并接收的应用程序步骤

(1)创建Intent对象,设置Intent对象的action属性。这个action属性是接收广播数据的标识。    注册了相同action属性的广播接收器才能收到发送的广播数据。

Intent intent = new Intent(); 

  intent.setAction("abc");

(2)编写需要广播的信息内容,将需要播发的信息封装到Intent中,通过Activity或Service继 承其父类Context的sendBroadcast()方法将Intent广播出去。

intent.putExtra("hello", "这是广播信息!");  //以键值对形式封装关闭消息内容

   sendBroadcast(intent);

(3)编写一个继承BroadcastReceiver的子类作为广播接收器,该对象是接收广播信息并对信 息进行处理的组件。在子类中要重写接收广播信息的onReceive()方法。

class TestReceiver extends  BroadcastReceiver   

 {

    public void onReceive(Context context, Intent intent) 

    {

         /*   接收广播信息并对信息作出响应的代码   */

     }

}

(4)在配置文件AndroidManifest.xml中注册广播接收类。

(5)销毁广播接收器。

Android系统在执行onReceive()方法时,会启动一个程序计时器,在一定时间内,广播接收器的实例会被销毁。因此,广播机制不适合传递大数据量的信息。

广播接收器的动态注册

  • 为了识别Intent对象的action,有时在IntentFilter对象中设置Intent对象的action,而注册广播接收器的工作由registerReceiver()方法完成。
  • registerReceiver(mBroadcast, filter)方法有两个参数,其中参数mBroadcast是广播接收器BroadcastReceiver对象,filter是IntentFilter对象。
  • Android 8.0之后推荐使用

系统服务

系统通知服务Notification

Notification是Android系统的一种通知服务,当手机来电、来短信、闹钟铃声时,在状态栏显示通知的图标和文字,提示用户处理。当拖动状态栏时,可以查看这些信息。

Notification提供了声音、振动等属性。

  • 系统通知服务Notification由系统通知管理对象NotificationManager进行管理及发布通知。由getSystemService(NOTIFICATION_SERVICE)创建NotificationManager对象,

 NotificationManager n_Manager = 

(NotificationManager)getSystemService(NOTIFICATION_SERVICE);

  • NotificationManager对象通过notify(int id, Notification notification) 方法把通知发送到状态栏。通过cancelAll() 方法取消以前显示的所有通知。

系统定时服务AlarmManager

AlarmManager服务主要有2种应用:

在指定时长后执行某项操作;

周期性的执行某项操作;

android 系统通过intent的action属性可以调用系统功能

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值