上面介绍了Action
,可以知道它的action
方法必须是同步执行,立马有返回结果的。为了满足异步的场景,于是就有了AsyAction
。
下面列出了AsyAction
的详细信息:
public abstract class AsyAction<REQ extends InteractiveBaseRequest,RESP extends InteractiveBaseResponse> extends ActionAdapter<REQ,RESP> {
public abstract void asyAction(REQ request, Context context, Event event, AsyActionCallBack<RESP> callBack);
@Override
public final RESP action(REQ request) {
throw new UnsupportedOperationException("Internal Action Unsupported invoke [action] method.");
}
}
可以看到AsyAction
类是在ActionAdapter
基础上扩展出来的,并且屏蔽了action
同步方法,而是扩展出了一个asyAction
方法。可以看到asyAction
方法除了request入参之外多了一个和原生的interactive
方法一样的两个参数context
和event
,还多了一个callback
方法。
下面给出了一个AsyAction
实现样例:
public class FirstInteraction extends AsyAction<FirstRequest, FirstResponse> {
@Override
public void asyAction(final FirstRequest request, Context context, Event event, final AsyActionCallBack<FirstResponse> callBack) {
FirstResponse response = new FirstResponse();
response.setHello(request.getName());
callBack.callBack(response);
}
}
现在返回结果必须通过callback
的回调方式。