首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >等待同步回调?

等待同步回调?
EN

Stack Overflow用户
提问于 2018-07-01 16:26:12
回答 1查看 339关注 0票数 0

假设我有以下代码:

代码语言:javascript
复制
private void getResource(String mac, String resource) {
int threadID = android.os.Process.myTid();

Log.e( "", "Marker 1" );
Mds.builder().build(mContext).get(SCHEME_PREFIX + mac + resource, null, new MdsResponseListener() {
    @Override
    public void onSuccess(String data, MdsHeader header) {
        Log.e( "", "Marker 2" );
        
        int callbackTID = android.os.Process.myTid();
        if( callbackTID == threadID) {
            Log.e("", "Same Thread");
        }

        else{
            Log.e("", "Different Thread");
        }
      }
  });

Log.e( "", "Marker 3" );
}

我在new MdsResponseListener中指定的回调似乎是在对get(...)进行整体函数调用的线程中执行的,因为threadIDcallbackTID是相同的。

但是,日志清楚地表明,"Marker 3"是在"Marker 2"之前打印的,据我理解,这告诉我这毕竟是一个异步回调。这怎么可能呢?我对java (和android)非常陌生,所以我可能错过了一些关键的基础知识。

如何实现等待回调的方法?我尝试了一个CoundDownLatch,它简单地在onSuccess方法中进行计数,在"Marker 3"日志打印之前等待,但是正如我所预期的,我被卡住了,因为显然回调运行在与等待的线程相同的线程中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-18 08:44:52

您应该了解异步编程及其工作原理。

示例1:

代码语言:javascript
复制
       Log.e( "", "Marker 1" );
    Mds.builder().build(mContext).get(SCHEME_PREFIX + mac + resource, null, new MdsResponseListener() {
        @Override
        public void onSuccess(String data, MdsHeader header) {
            Log.e( "", "Marker 2" );
            doSomething() // Your method call when response is ready

      });

    private void doSomething() {
     Log.e( "", "Marker 3" );
   }

    }

例2( RxJava )

代码语言:javascript
复制
Obserable.create( source -> 
Mds.builder().build(mContext).get(SCHEME_PREFIX + mac + resource, null, new MdsResponseListener() {
    @Override
    public void onSuccess(String data, MdsHeader header) {
     source.onNext(data)
     source.onComplete()
  });
)

然后订阅此可观察到的内容,您可以使用subscribeOn / observeOn。

注意:这只是伪代码,显示了如何实现。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51125055

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档