如何实现一个监听器

Oce*_*lue 17 android listener android-asynctask

我有一个设计问题.我需要实现一个监听器.我看到了以下SO问题: 如何在android中创建自己的Listener接口?

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

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

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

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

hac*_*bod 51

AsyncTask与实现侦听器无关.

这是一个听众:

public interface TheListener {
    public void somethingHappened();
}
Run Code Online (Sandbox Code Playgroud)

无论如何都要打电话.例如,这是一个像View一样的类:

public class Something {
    private TheListener mTheListener;

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

    private void reportSomethingChanged() {
        if (mTheListener != null) {
            mTheListener.somethingHappened();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

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

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

  • 嗨,我对你在setTheListner()中设置监听器的内容感到有点困惑 (3认同)

Mac*_*acD 5

只是为了清理事情;

你正在做什么@hackbod说并添加这个:

activity包围类(方法setListener(Listener listen)),工具Listener和它oncreateonResume或者,任何你打电话yourClass.setListener(this).