我正在开发一个应用程序,我在其中使用改造库来调用Web服务。在调用web-service后,回调返回Response然后我将响应传递给下一个活动。我想知道最好的方法。
我是记忆相关问题的新手,如果我完全错了,请纠正我。
我应该创建一个新类,然后将弱引用传递给该类,并在主活动上调用该类中的函数。
我将在事件总线上注册一个新事件,当回调返回对象时,触发事件并调用该函数。
请考虑避免内存泄漏的好处。
答案 0 :(得分:6)
在弱引用中保存回调/侦听器不是一个好主意。参见
您可以使用事件总线在完成时“广播”异步操作的结果(在您的情况下为网络调用),并将其他对象(视图,片段,活动)注册到事件总线。注意事项:
特别是对于Retrofit的使用,如果您以异步方式执行请求:
GitHubService service = retrofit.create(GitHubService.class);
Call<List<Repo>> repos = service.listRepos("octocat");
repos.enqueue(myCallback)
然后,您必须记住在组件的生命周期完成时取消组件所做的所有调用。 onDestroy()
Activity
,onDetach()
Fragment
,onDetachFromWindow()
View
:
repos.cancel();