如何实现一个监听器

时间:2011-05-09 20:11:23

标签: android android-asynctask listener

我有设计问题。我需要实现一个监听器。我看到了以下SO问题: How to create our own Listener interface in android?

但是在答案中提供的链接中,作者创建了一个只扩展系统定义的侦听器的侦听器。例如,点击,你会做一些验证&然后调用另一个名为“whenValidatedListener”的方法

我需要定义未链接到现有事件侦听器的侦听器。基本上会在本机(C / C ++)代码中进行一些处理。在Android代码中,我需要一个监听器来响应来自它的某些消息。

我想我可以使用处理程序来做到这一点。但AsyncTask是多线程推荐的方法。

有没有办法使用AsyncTask实现用户定义的侦听器?

2 个答案:

答案 0 :(得分:51)

AsyncTask与实现侦听器无关。

这是一个听众:

public interface TheListener {
    public void somethingHappened();
}

随心所欲地调用它。例如,这是一个像View一样的类:

public class Something {
    private TheListener mTheListener;

    public void setTheListener(TheListener listen) {
        mTheListener = listen;
    }

    private void reportSomethingChanged() {
        if (mTheListener != null) {
            mTheListener.somethingHappened();
        }
    }
}

您可以根据需要使其变得复杂。例如,您可以使用ArrayList代替单个侦听器指针,以允许注册多个侦听器。

从本机代码调用它也与实现侦听器接口无关。您只需要了解JNI以了解本机代码如何与Java语言代码交互。

答案 1 :(得分:5)

只是为了清理事情;

你完全按照@hackbod所说的那样添加:

包含该类的activity(使用方法setListener(Listener listen)),实现Listener并在其中oncreateonResume或您调用的地方yourClass.setListener(this)