我想知道如果我创建一个OkHttpClient实例来服务我的"整个Android应用程序",是否会出现任何性能瓶颈或问题.即在我的Application类中,我创建了一个静态公共变量,它将包含一个OkHttpClient实例,每当我需要执行一个http请求时,我基本上构建一个请求对象,然后使用创建的okhttpclient实例来触发请求.
代码是这样的
public class MyApplication extends Application {
public static OkHttpClient httpClient;
@Override
public void onCreate() {
super.onCreate();
httpClient = new OkHttpClient();
}
}
// Making request 1
Request request1 = new Request.Builder().url(ENDPOINT).build();
Response response = MyApplication.httpClient.newCall(request1).execute();
// Making request 2
Request request2 = new Request.Builder().url(ENDPOINT).build();
Response response = MyApplication.httpClient.newCall(request2).execute();
Run Code Online (Sandbox Code Playgroud)
bhd*_*rkn 23
使用单个实例不是问题,而是最佳实践.您可以从github查看类似的应用程序,它使用dagger制作OkHttpClient单例并将其注入其他模块.
你可以在这个讨论中看到JakeWharton也在暗示这种用法.
但是如果你为此目的使用Singleton模式会更好.
dom*_*nik 11
除了@bhdrkn 正确建议的内容之外,为了明确确认 的单例实例OkHttpClient是正确的方法,摘录自文档:
来源:https : //square.github.io/okhttp/3.x/okhttp/okhttp3/OkHttpClient.html
OkHttpClients 应该被共享
当您创建单个 OkHttpClient 实例并将其重用于所有 HTTP 调用时,OkHttp 的性能最佳。这是因为每个客户端都拥有自己的连接池和线程池。重用连接和线程可减少延迟并节省内存。相反,为每个请求创建一个客户端会浪费空闲池上的资源。
请参阅 Javadoc(上面的链接)以查看初始化OkHttpClient实例的正确方法。
| 归档时间: |
|
| 查看次数: |
7196 次 |
| 最近记录: |