我正在研究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() + "<---"); } }; }}
解决方法:
默认情况下,Retrofit使用具有60秒核心池超时的非守护程序线程池.很少,你很想以这种方式使用Retrofit的异步回调行为.
如果您只是测试,可以在RestAdapter.Builder上调用setExecutors并将同步执行程序作为第一个参数传递,并将第二个参数传递给null.这将允许您使用异步API,但在测试中获得同步行为.
和同步执行程序,如果你不知道如何制作一个:
public final class SynchronousExecutor implements Executor { @OverrIDe public voID execute(Runnable r) { r.run(); }}
总结 以上是内存溢出为你收集整理的Android和Java的REST客户端改造不会终止全部内容,希望文章能够帮你解决Android和Java的REST客户端改造不会终止所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)