Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 改装和GSON-获取数据需要10秒_Android_Json_Rest_Gson_Retrofit - Fatal编程技术网

Android 改装和GSON-获取数据需要10秒

Android 改装和GSON-获取数据需要10秒,android,json,rest,gson,retrofit,Android,Json,Rest,Gson,Retrofit,我正在学习如何使用GSON对库进行改装,以便使我未来的应用程序更加稳定。然而,我期待着“奇怪的错误”。 我正在从中获取位置(用于测试目的) 这是我的密码 main活动 public class MainActivity extends AppCompatActivity { private SOService mService; private long currentTime; //start time private long finishedTime; //end

我正在学习如何使用GSON对库进行改装,以便使我未来的应用程序更加稳定。然而,我期待着“奇怪的错误”。 我正在从中获取位置(用于测试目的)

这是我的密码

main活动

public class MainActivity extends AppCompatActivity {

    private SOService mService;
    private long currentTime; //start time
    private long finishedTime; //end time


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mService = ApiUtils.getClient();

        currentTime = System.currentTimeMillis();
        mService.getLocations().enqueue(new Callback<List<LocationsList>>() {
            @Override
            public void onResponse(Call<List<LocationsList>> call, Response<List<LocationsList>> response) {
                if(response.isSuccessful()){
                    Log.d("TAG", response.body().toString());
                    finishedTime = System.currentTimeMillis();

                    Log.d("TAG", "It took " + TimeUnit.MILLISECONDS.toSeconds(finishedTime - currentTime) + " seconds to complete");

                }
                else{
                    Log.d("TAG","Code"+response.code());

                }
            }

            @Override
            public void onFailure(Call<List<LocationsList>> call, Throwable t) {
                Log.d("TAG",t.getMessage());
            }
        });


    }
}
更新客户端

public class RetrofitClient {
    private static Retrofit client;

    public static Retrofit getClient(String baseUrl){
        if(client == null){
            client = new Retrofit.Builder()
                    .baseUrl(baseUrl)
                    .addConverterFactory(GsonConverterFactory.create())
                    .build();
        }
        return client;

    }
}
SOService

public interface SOService {
    @GET("/api/location/search/?query=san")
    Call<List<LocationsList>> getLocations();
}
公共接口服务{
@获取(“/api/location/search/?query=san”)
调用getLocations();
}
我已经删除了用于更干净代码的包和导入。位置列表是POJO。执行代码时,我收到以下消息: 09-25 16:23:12.913 10994-10994/pw.davor.www.reformation D/TAG:[地点列表{title='San Francisco'

09-25 16:23:12.913 10994-10994/pw.davor.www.reformation D/TAG:完成这项工作花了10秒钟


但是,当我在Postman中执行GET请求时,大约需要100-300毫秒。

每次调用都要构建一个新的客户端?也许可以将其创建为单例并重用它。(我想这可能是一个答案,但我猜,在不知道代码花费时间的情况下。您可能需要添加一些基准测试代码来找到热点。但它可能不是实际的REST调用/响应。)此外,Gson不是您可以获得的最快JSONTObject转换(使用反射重).你自己试过解析Json吗?(仅供参考,我使用了巨大的Gson对象和巨大的改装响应,它从来不会花费接近10秒的时间。我的意思是,这个列表有多大?@jdv-Nope,它是一个具有稍微不同的制作方法的单例。这个测试项目是“由书籍构建的”,代码来自他们的github页面。列表相当小,大约15个对象,每个对象有4个成员。@Rafael T我没有。我使用gson已经有几个月了,我从来没有遇到过这样的问题。你每次调用都在构建一个新的客户机?也许可以将它创建为一个单例并重用它。(我想这可能是一个答案,但我猜,在不知道代码花费时间的情况下。您可能需要添加一些基准测试代码来找到热点。但它可能不是实际的REST调用/响应。)此外,Gson不是您可以获得的最快JSONTObject转换(使用反射重).你自己试过解析Json吗?(仅供参考,我使用了巨大的Gson对象和巨大的改装响应,它从来不会花费接近10秒的时间。我的意思是,这个列表有多大?@jdv-Nope,它是一个具有稍微不同的制作方法的单例。这个测试项目是“由书籍构建的”,代码来自他们的github页面。列表相当小,大约15个对象,每个对象有4个成员。@Rafael T我没有。我使用gson已经几个月了,我从来没有遇到过这样的问题
public interface SOService {
    @GET("/api/location/search/?query=san")
    Call<List<LocationsList>> getLocations();
}