HTTP/HTTPS请求
工具库:OkHttp、Retrofit、Volley
示例(Retrofit):
public interface ApiService { @GET("path/to/data") Call<ResponseBody> getData(); } Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://example.com/") .addConverterFactory(GsonConverterFactory.create()) .build(); ApiService apiService = retrofit.create(ApiService.class); apiService.getData().enqueue(new Callback<ResponseBody>() { @Override public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) { if (response.isSuccessful()) { // 处理响应数据 } } @Override public void onFailure(Call<ResponseBody> call, Throwable t) { // 处理失败 } });
WebSocket长连接
Intent传值
普通数据:intent.getStringExtra("key")
复杂对象:通过Serializable
或Parcelable
接口序列化。
示例:
// 发送端 Intent intent = new Intent(this, TargetActivity.class); intent.putExtra("user", new User("name", 20)); // User需实现Parcelable startActivity(intent); // 接收端 User user = getIntent().getParcelableExtra("user");
BroadcastReceiver
BroadcastReceiver receiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { // 处理广播 } }; IntentFilter filter = new IntentFilter("android.intent.action.ACTION_NAME"); registerReceiver(receiver, filter);
文件存储
getFilesDir()
,无需申请权限。 READ_EXTERNAL_STORAGE
权限,Android 10+需处理分区存储。 // 读取内部文件 try (FileInputStream fis = openFileInput("data.txt")) { BufferedReader reader = new BufferedReader(new InputStreamReader(fis)); String line = reader.readLine(); } catch (IOException e) { e.printStackTrace(); }
数据库操作
工具:SQLite、Room(抽象层)。
Room示例:
@Dao public interface UserDao { @Query("SELECT FROM user") List<User> getAllUsers(); } @Database(entities = {User.class}, version = 1) public abstract class AppDatabase extends RoomDatabase { public abstract UserDao userDao(); }
SensorManager
获取加速度、陀螺仪等数据。 SensorManager sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); Sensor accelerometer = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); sensorManager.registerListener(new SensorEventListener() { @Override public void onSensorChanged(SensorEvent event) { float x = event.values[0]; // 处理数据 } }, accelerometer, SensorManager.SENSOR_DELAY_NORMAL);
方式 | 适用场景 | 优点 | 缺点 |
---|---|---|---|
HTTP/Retrofit | REST API交互 | 简单易用,支持缓存 | 依赖网络,延迟较高 |
WebSocket | 实时通信 | 低延迟,双向传输 | 长连接消耗资源 |
Intent传值 | 页面间数据传递 | 轻量级,无需序列化 | 仅支持应用内传递 |
Room/SQLite | 本地持久化存储 | 类型安全,离线可用 | 需处理数据库迁移 |
BroadcastReceiver | 系统/应用内事件响应 | 解耦设计,灵活 | 需管理生命周期 |
解答:
使用Handler
、LiveData
或Coroutine
将子线程结果切换到主线程。
// Coroutine方式 GlobalScope.launch(Dispatchers.IO) { val data = apiService.getData() // 网络请求 withContext(Dispatchers.Main) { // 更新UI } }
解答:
Interceptor
或ResponseBody
的source()
监控下载