我有设计问题。我需要实现一个监听器。我看到了以下SO问题: How to create our own Listener interface in android?
但是在答案中提供的链接中,作者创建了一个只扩展系统定义的侦听器的侦听器。例如,点击,你会做一些验证&然后调用另一个名为“whenValidatedListener”的方法
我需要定义未链接到现有事件侦听器的侦听器。基本上会在本机(C / C ++)代码中进行一些处理。在Android代码中,我需要一个监听器来响应来自它的某些消息。
我想我可以使用处理程序来做到这一点。但AsyncTask是多线程推荐的方法。
有没有办法使用AsyncTask实现用户定义的侦听器?
答案 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
并在其中oncreate
或onResume
或您调用的地方yourClass.setListener(this)
。