getActivity / EasyHttp

Android 网络请求框架,简单易用,so easy
Apache License 2.0
1.4k stars 191 forks source link

[疑惑]:其实不用传入setLifecycleOwner对象的 #239

Closed HeVTion closed 7 months ago

HeVTion commented 7 months ago

问题描述【必填】

老师,其实不用传入setLifecycleOwner对象的。 因为,在使用ViewModel和LiveData的架构中,通常不需要直接将LifecycleOwner传递给网络请求库来管理请求的生命周期。ViewModel和LiveData已经为你提供了一种优雅的方式来处理与生命周期相关的逻辑。 如下,

class HomeViewModel : ViewModel() {
    /**
     * 模拟网络请求
     */
    private val data = MutableLiveData<String>()
    fun fetchData() {
        Http.getInstance()
            .setUrl("/api/weather/city/101010100")
            .setLifecycleOwner(this)
            .get(object : OnHttpListener<String> {
                override fun onHttpSuccess(p0: String?) {
                    ToastUtils.showLong(p0)
                }

                override fun onHttpFail(p0: Throwable?) {
                    ToastUtils.showLong(p0?.message)
                }
            })
        val responseData = "这是从网络获取的数据"
        data.value = responseData
    }
}

因为mv本身就自带生命周期的,即使是使用mvp这种,也可以让p自己去实现Lifecycle的。

不知道我的理解正确吗

框架文档是否提及了该问题【必答】

是否已经查阅框架文档但还未能解决的【必答】

issue 列表中是否有人曾提过类似的问题【必答】

是否已经搜索过了 issue 列表但还未能解决的【必答】

HeVTion commented 7 months ago

LifecycleOwner这非常的鸡肋,因为很多地方是获取不到LifecycleOwner的,他只存在于activity和fragment中,这样就形成了一个绑定关系

HeVTion commented 7 months ago

现在不传入LifecycleOwner对象是不行的,只能去拿默认的,这样写又感觉很多此一举

getActivity commented 7 months ago
image

小伙子,该 issue 被打回,打回的原因如下:

请重新提一个 issue 并纠正以上问题

AdminQQZ commented 5 months ago

提问模板太形式化了,有些问题能看得懂就行了,特殊问题需要记录详细。另外我也遇到了LifecycleOwner传参的问题,现在根本不需要传入