【问题标题】:Retrofit REST client for Android and Java does not terminate适用于 Android 和 Java 的改造 REST 客户端不会终止
【发布时间】:2015-02-05 02:13:06
【问题描述】:

我正在研究适用于 Android 和 Java 的 Retrofit REST 客户端。

在 Eclipse 中使用标准 Java 项目,我正在使用带有 void 返回类型的 @POST。

进行异步调用。

一切都按预期工作,但是我的测试主方法永远不会终止。我必须手动停止每个测试执行。

我需要做什么(或停止做什么)才能让我的测试自动终止?

这是我的 java 代码。

import retrofit.Callback;
import retrofit.RestAdapter;
import retrofit.RetrofitError;
import retrofit.client.Response;

public class Android {

    private static final RestAdapter mRestAdapter =
        new RestAdapter.Builder()
            .setEndpoint("http://localhost:8080/resources/registrations")
            .build();

    public static void main(final String... args) {

        final AndroidRegister androidRegister =
            mRestAdapter.create(AndroidRegister.class);

        Callback<Void> callback = manufactureCallback();

        androidRegister.androidRegisterInterface(
            new RegistrationIdJson("1111-2222-3333-4444"), callback);    
    }

    private static Callback<Void> manufactureCallback() {
        return new Callback<Void>() {

            @Override
            public void failure(final RetrofitError retrofitError) {
                System.out.println("retrofitError-->"
                    + retrofitError.getLocalizedMessage() + "<---");
            }

            @Override
            public void success(final Void returning,
                                final Response response) {
                System.out.println("-->" + returning + "<--->"
                    + response.getStatus() + "<---");
            }
        };
    }
}

【问题讨论】:

    标签: java android rest retrofit


    【解决方案1】:

    默认情况下,Retrofit 使用具有 60 秒核心池超时的非守护线程池。您很少会想以这种方式使用 Retrofit 的异步 Callback 行为。

    如果您只是简单地测试,您可以在RestAdapter.Builder 上调用setExecutors,并将同步执行器作为第一个参数传递,null 作为第二个参数传递。这将允许您使用异步 API,但在测试中获得同步行为。

    还有一个同步执行器,如果你不知道怎么做的话:

    public final class SynchronousExecutor implements Executor {
      @Override public void execute(Runnable r) {
        r.run();
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-19
      • 1970-01-01
      相关资源
      最近更新 更多