从非活动类中获取活动的结果

时间:2014-12-21 14:28:38

标签: java android android-activity start-activity

<总结>

是否有优雅的方式从非活动类中获取活动的结果,还是总是会成为黑客?如果可能的话,我会更好地避免这种情况吗?

< /总结>

我有一个活动,它有一个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并在其他类中检索它,但是我必须有一些方法来确定它何时被保存,而且这一切似乎都变得相当混乱

另一种选择是使会话成为非显示活动。虽然看起来像一个很大的开销。

我的项目仍处于规划阶段,所以我经历了最佳实践。最优雅的方法是什么?

1 个答案:

答案 0 :(得分:0)

我会使用事件总线(例如Otto,GreenRobot)将活动结果传达给非活动。