2016-09-29 90 views
-1

这是我的代码。从onResponse回调中获取数据并以相同的方法返回

private long getLastTimestamp() 
{ 
    long timestamp = 0; 
    retrofit2.Call<UserStatistic> call = api.getUserStatistics(); 

    call.enqueue(new Callback<UserStatistic>() { 

     @Override 
     public void onResponse(retrofit2.Call<UserStatistic> call, Response<UserStatistic> response) { 
      if (response.body() != null) 
      { 
       List<Statistic> statistics = response.body().getData(); 

       statistics.get(statistics.size() - 1).Data; 
      } 
     } 

     @Override 
     public void onFailure(retrofit2.Call<UserStatistic> call, Throwable t) { 
      Log.d("LOG", "Something went wrong :c"); 
     } 

    }); 

    return timestamp; 
} 

我真的不知道如何简单地返回保存在时间戳变量中的响应。有任何想法吗?提前致谢。

回答

2

如果要同步调用此方法,可以使用以下代码

private long getLastTimestamp() { 

     retrofit2.Call<UserStatistic> call = api.getUserStatistics(); 

     UserStatistic statistics = call.execute().body(); 

     long timestamp = statistics.YOUR_CODE; 

     return timestamp; 
    } 

,或者如果你想使异步调用,然后调用此方法像这样

private void callingMethod() { 

     getLastTimestamp (new Callback<UserStatistic>() { 

      @Override 
      public void onResponse(retrofit2.Call<UserStatistic> call, Response<UserStatistic> response) { 
       if (response.body() != null) 
       { 
        List<Statistic> statistics = response.body().getData(); 

        statistics.get(statistics.size() - 1).Data; 
       } 
      } 

      @Override 
      public void onFailure(retrofit2.Call<UserStatistic> call, Throwable t) { 
       Log.d("LOG", "Something went wrong :c"); 
      } 

     }); 
    } 

    private long getLastTimestamp(Callback<UserStatistic> callback) 
    { 
     long timestamp = 0; 
     retrofit2.Call<UserStatistic> call = api.getUserStatistics(); 

     call.enqueue(callback); 

     return timestamp; 
    } 
+0

这就是我需要的!谢谢! –

0

这是因为

retrofit2.Call<UserStatistic> call = api.getUserStatistics(); 

此线

call.enqueue(new Callback<UserStatistic>() { 

将创建一个监听器和当数据网络呼叫之后负载此侦听改型的helop内将调用onResponse()方法

+0

是的,但我需要返回response.body()。getData();从主要方法,但我不能从我的回调回应。 –

相关问题