1. 说明Android两种事件处理机制的不同。
答:(1)基于监听器的事件处理相比于基于回调的事件处理,更具“面向对象”性质的事件处理方式。基于监听器的事件处理机制是一种委派式Delegation的事件处理方式,事件源将整个事件委托给事件监听器,由监听器对事件进行响应处理。这种处理方式将事件源和事件监听器分离,有利于提供程序的可维护性。
(2)基于回调的事件处理相比基于监听器的事件处理模型,基于回调的事件处理模型要简单些,该模型中,事件源和事件监听器是合一的,也就是说没有独立的事件监听器存在。当用户在GUI组件上触发某事件时,由该组件自身特定的函数负责处理该事件。通常通过重写Override组件类的事件处理函数实现事件的处理。
(3)所以,总的来说:①基于监听器的事件模型符合单一职责原则,事件源和事件监听器分开实现;②Android的事件处理机制保证基于监听器的事件处理会优先于基于回调的事件处理被触发;③某些特定情况下,基于回调的事件处理机制会更好的提高程序的内聚性。
2. 对于Android的两种时间处理机制,分别写一个案列测试,了解其执行过程。
(1)基于监听的事件处理:
activity_main.xml布局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.example.administrator.chapter_listener.MainActivity">
<EditText
android:id="@+id/editText1"
android:layout_width="match_parent"
android:layout_height="50dp"
android:inputType="textPersonName"
android:hint="请输入内容:"
android:textColor="@android:color/black"
android:textSize="18sp"/>