我正在寻找一个关于
android robospice库如何管理活动生命周期的技术答案.从入门页面:
https://github.com/octo-online/robospice/wiki/Starter-Guide
“作为您的Activity(或其他上下文)的内部类,添加一个将更新UI的RequestlListener.不用担心内存泄漏,RoboSpice会管理您的活动的生命周期.
我的问题是,robospice如何自动更新请求监听器,以便它仍然能够在旋转之后以及在活动被销毁并被重新创建为新实例之后使用正确的上下文调用正确的监听器?
我一直在尝试逆向工程的源代码,但还没有找到答案:
解决方法
@Take机会让Cha.你说的是完全正确的. RS已经设计了这个明确的需求:管理网络请求和活动的生命周期.
@ craigrs84.基本上,RS发生的是在处理请求时,只要关联的活动存活,它的监听器就被调用.如果这个活动不再活着,所有的听众都会从RS拔掉,不会收到通知.
RS的主要目的是确保没有内存泄漏:您的活动,如果它必须死,将死亡并被垃圾回收,RS不会阻止垃圾收集的任何硬引用.这真的是RoboSpice背后的核心理念.
如果您希望将一个新的活动实例重新插入到待处理的请求中(例如,您执行一个请求,然后旋转设备,然后获取一个新的活动实例,并希望新实例接收请求的结果由前一个实例执行),这是可能与RS.
在这种情况下,在调用spiceManager.start(..)之后,在启动时使用spiceManager.addListenerIfPending方法.这将不会执行新的请求,而是将新的侦听器重新插入挂起的请求.如果没有请求正在等待,那么它什么也不做.