一、Retrofit2
Retrofit是一个RESTful的HTTP网络请求框架,它可以将HTTP API转化为Java接口。Retrofit2相对于之前的版本进行了重大的改变,大大提高了效率并且对于响应式编程的支持更好了。
使用Retrofit2需要先添加依赖:
dependencies {
implementation 'com.squareup.retrofit2:retrofit:2.5.0'
}
接着需要创建一个服务接口,例如:
interface ApiService {
@GET("user")
fun getUser(): Call<User>
}
然后在Activity或者Fragment中创建Retrofit实例并且调用服务接口:
val retrofit = Retrofit.Builder()
.baseUrl("https://www.example.com/api/")
.addConverterFactory(GsonConverterFactory.create())
.build()
val apiService = retrofit.create(ApiService::class.java)
apiService.getUser().enqueue(object : Callback<User> {
// 处理服务器响应
override fun onResponse(call: Call<User>, response: Response<User>) {
val user = response.body()
}
// 处理HTTP错误
override fun onFailure(call: Call<User>, t: Throwable) {
t.printStackTrace()
}
})
二、Glide
图片加载框架Glide可以很方便地将图片加载到ImageView或者其他的View上。它具有内存和磁盘缓存,可以提高图片的加载速度并且减少数据网络的流量。
使用Glide需要先添加依赖:
dependencies {
implementation 'com.github.bumptech.glide:glide:4.9.0'
kapt 'com.github.bumptech.glide:compiler:4.9.0'
}
接着可以使用Glide将图片加载到ImageView中:
Glide.with(this)
.load("https://www.example.com/image.jpg")
.into(imageView)
如果要使用占位图和错误图:
Glide.with(this)
.load("https://www.example.com/image.jpg")
.placeholder(R.drawable.placeholder)
.error(R.drawable.error)
.into(imageView)
三、EventBus
EventBus是一个非常方便的事件通知框架,可以将事件发送到任意的订阅者。它可以替代广播和回调,让代码更加清晰明了。
使用EventBus需要先添加依赖:
dependencies {
implementation 'org.greenrobot:eventbus:3.2.0'
}
接着在需要接收事件的Activity或者Fragment中注册:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
EventBus.getDefault().register(this)
}
@Subscribe(threadMode = ThreadMode.MAIN)
fun onMessageEvent(event: MessageEvent) {
// 处理事件
}
override fun onDestroy() {
EventBus.getDefault().unregister(this)
super.onDestroy()
}
然后在发送事件的地方发送事件:
EventBus.getDefault().post(MessageEvent("Hello, World!"))