<总结>
是否有优雅的方式从非活动类中获取活动的结果,还是总是会成为黑客?如果可能的话,我会更好地避免这种情况吗?
< /总结>
我有一个活动,它有一个Web服务会话实例,通常会进行预先验证(会话密钥将保存在 SharedPreferences)。但是,第一次运行时,我需要弹出一个登录活动,它会将用户名和密码返回给会话,然后会话与服务器通信并获取会话密钥。
理想情况下,我想让非活动会话类调用startActivityForResult,但我不确定它是否可行。我已经看到了关于如何做到的各种问题:
How to get the result from OnActivityResult inside another class?(outside of the activity
use startActivityForResult from non-activity
但他们似乎都有点hacky。我也看过这个,这表明无论如何,绕过上下文并不是最好的主意:
http://android-developers.blogspot.co.uk/2009/01/avoiding-memory-leaks.html
另一个选择是将用户名和密码保存到sharedpreferences并在其他类中检索它,但是我必须有一些方法来确定它何时被保存,而且这一切似乎都变得相当混乱
另一种选择是使会话成为非显示活动。虽然看起来像一个很大的开销。
我的项目仍处于规划阶段,所以我经历了最佳实践。最优雅的方法是什么?
答案 0 :(得分:0)
我会使用事件总线(例如Otto,GreenRobot)将活动结果传达给非活动。