HTTP 请求
核心工具:HttpURLConnection
(原生)、OkHttp
(第三方)、Retrofit
(封装库)。
使用场景:RESTful API 调用、文件上传/下载。
示例代码(Retrofit):
public interface ApiService { @GET("users/{id}") Call<User> getUser(@Path("id") int id); } Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://api.example.com/") .addConverterFactory(GsonConverterFactory.create()) .build(); ApiService apiService = retrofit.create(ApiService.class);
WebSocket 通信
OkHttp
WebSocket、Socket.IO
。 OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder().url("wss://echo.websocket.org").build(); WebSocketListener listener = new WebSocketListener() { / 实现回调 / }; WebSocket ws = client.newWebSocket(request, listener);
TCP/UDP Socket
Socket socket = new Socket("server_ip", port); PrintWriter out = new PrintWriter(socket.getOutputStream()); out.println("Hello Server"); out.flush();
存储方式 | 适用场景 | 特点 |
---|---|---|
SharedPreferences | 轻量级键值对 | 快速读写,不适合复杂数据结构 |
SQLite | 结构化数据 | 支持事务、索引,需手动管理数据库操作 |
Room | 复杂对象存储 | 基于 SQLite,提供抽象层,支持 LiveData |
File | 文件存储(如图片、视频) | 适合大文件,需处理权限问题 |
MMKV | 高效键值存储(腾讯开源) | 支持多进程共享,性能优于 SharedPreferences |
JSON 解析
Gson
(Google)、Moshi
(Twitter)、FastJSON
。 Gson gson = new Gson(); User user = gson.fromJson(jsonString, User.class);
XML 解析
XmlPullParser
(手动解析)、Simple
(简化版)。 XmlPullParser parser = Xml.newPullParser(); parser.setInput(inputStream, "UTF-8"); // 读取事件并处理标签
对象序列化
Serializable
或 Parcelable
接口。 方案 | 适用场景 | 优点 |
---|---|---|
AsyncTask(已弃用) | 简单任务 | 代码简洁,但生命周期管理困难 |
Handler/Looper | 单次消息处理 | 轻量级,需手动管理线程 |
RxJava | 复杂异步链式调用 | 功能强大,学习成本高 |
Coroutine(Kotlin) | 现代异步编程 | 简洁语法,与线程无缝协作 |
WorkManager | 延迟/周期性后台任务 | 兼容应用生命周期,适合长时间任务 |
网络安全
OkHttpClient client = new OkHttpClient.Builder() .sslSocketFactory(SSLContextUtils.getSSLSocketFactory(), trustManager) .hostnameVerifier((hostname, session) -> true) // 仅测试环境使用 .build();
缓存优化
LruCache
(最近最少使用算法)。 OkHttp
内置缓存,或 DiskLruCache
。 OkHttpClient client = new OkHttpClient.Builder() .cache(new Cache(cacheDir, cacheSize)) .build();
流量优化
OkHttpClient client = new OkHttpClient.Builder() .addInterceptor(chain -> { Response response = chain.proceed(request); return response.newBuilder() .header("Content-Encoding", "gzip") .build(); }) .build();
解答:
OkHttp
的重试拦截器或 Retrofit
的 retryWhen
(RxJava)。 Timber
或 Logcat
记录错误详情。apiService.getUser(userId) .retryWhen(errors -> errors.flatMap(error -> { if (isNetworkError(error)) { return Observable.just(1).delay(1, TimeUnit.SECONDS); } return Observable.error(error); })) .subscribe(user -> {}, throwable -> { / 处理错误 / });
解答:
INTERNET
)。CertificatePinner certificatePinner = new CertificatePinner.Builder() .add("api.example.com", "sha256/abcdef...") // 替换为真实证书哈希 .build(); OkHttpClient client = new OkHttpClient.Builder() .certificatePinner(certificatePinner) .build();