android中监听器和界面的区别?

时间:2012-11-19 06:14:28

标签: android interface listener handler

监听器, 接口, 处理程序。

它们听起来很相似,但它们必须不同。

也许在objective-c中'委托'。

3 个答案:

答案 0 :(得分:6)

<强>接口

interface用于提供角色。根据设计模式,当某些不断变化的行为必须封装在 interfaceabstract class中时。

<强>例如

假设有paint class,其方法为paintIt()

现在方法paintIt()可以是自由的,着色等,所以这种不断变化的行为。因此,我们需要将其封装在 interfaceabstract class中。

<强>监听器:

Listeners是侦听某些操作的接口,它们包含回调方法,该方法具有在特定操作完成时要触发的逻辑。

<强>处理程序:

android中的

Handlers用于将数据从非UI线程发布到UI线程。

答案 1 :(得分:1)

监听器在点网中几乎是类似的委托,可能是客观的C.它的主要用途是在执行某个动作或事件时保持回调方法。 在dotnet的情况下,我们将方法本身作为回调传递给委托(可能在Objective C中,情况也是如此。),但在java中,没有像委托一样的概念。所以它使用接口来做同样的技巧。

例如,如果我们需要分配一个按钮点击一个方法,在dotnet中,可能在目标C中,我们将把该函数指针传递给相应的点击代理。在Java中,我们要做的是创建一个这样的接口:

public interface ButtonClickListener{
    void onClick();
}

然后在Button类中,而不是委托,我们将创建一个函数来接受这个监听器:

public void setOnClickListener(ButtonClickListener listener){
    mButtonClickListener=listener;
}

我们将使用setOnClickListener实现的类的对象在我们的类中调用此ButtonClickListener方法。

然后每当按钮点击发生时,Button类的作用是:

mButtonClickListener.onClick();

这将调用ButtonClickListener Implemented类的onClick,我们可以在那里执行所需的操作。

处理程序与此无关。这是一个Android框架提供的类,用于在我们使用其他自定义线程时与UI线程同步操作。

希望你明白了!。

答案 2 :(得分:1)

这很棘手,因为有很多重叠,特别是指Objective-C。

这是我的最大努力:

监听器是一种接口。

查看http://developer.android.com/guide/topics/ui/ui-events.html#EventListeners

根据该页面,“事件”监听器的独特之处在于它是一个单一的回调接口。该页面特定于视图,但是监听器当然可以应用于任何其他类型的事件。

android.os.Handler的android页面是: http://developer.android.com/reference/android/os/Handler.html

如果您非常专注于差异,或许将处理程序更多地用于双重目的概念是合理的。处理程序包括发送消息/事件,并在稍后接收它。

棒球?
在场上的球员是球的倾听者。 玩家手上的手套(弱类比)就是界面。 一个玩家把球扔到空中给自己带来乐趣并抓住它是一个处理程序 :)

在Objective-C中: 接口的使用大致相同,但名称不同:@protocol

Android / Java的Objective-C监听器以多种方式实现,比如java / android中的监听器。我所说的最好的Obj-C对应方是通知(NSNotification和NSNotificationCenter)。这可能是有争议的。

当然,有各种各样的代码编码方式和各种模式。 android中的Handler可以等同于在Obj-C消息中作为参数传递的块,或者委托也适合。