如何在 Android 应用程序的活动之间传递数据?

新手上路,请多包涵

我有一个场景,通过登录页面登录后,每个 --- 都会有一个注销 button activity

单击 sign-out 时,我将传递已登录用户的 session id 以注销。谁能指导我如何保持 session id 可供所有人使用 activities

这种情况的任何替代方案

原文由 UMAR-MOBITSOLUTIONS 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 515
2 个回答

最简单的方法是将会话 ID 传递给您用于启动活动的 Intent 中的注销活动:

 Intent intent = new Intent(getBaseContext(), SignoutActivity.class);
intent.putExtra("EXTRA_SESSION_ID", sessionId);
startActivity(intent);

在下一个活动中访问该意图:

 String sessionId = getIntent().getStringExtra("EXTRA_SESSION_ID");

Intents 的 文档 有更多信息(查看标题为“Extras”的部分)。

原文由 Erich Douglass 发布,翻译遵循 CC BY-SA 4.0 许可协议

在活动和 android 应用程序的其他组件之间传递数据的方法不止一种。一种是使用很多答案中已经提到的意图和可包裹性。

另一种优雅的方式是使用 Eventbus 库。

从发射活动:

 EventBus.getDefault().postSticky("--your Object--");

在 recv 活动中:

 EventBus.getDefault().removeStickyEvent("--Object class--")

其他需要考虑的点:

  1. 提供更多自由,您可以传递复杂的对象,而无需以任何形式修改它们。
  2. 不仅限于在活动之间传递数据,一旦您设置了库,您就可以使用它在应用程序管道中将数据从一个地方传递到另一个地方。例如,将其用于 BottomSheetMenu 以进行活动通信。
  3. 稳定的图书馆。
  4. 简化组件之间的通信
  5. 解耦事件发送者和接收者
  6. 在 UI 工件(例如活动、片段)和后台线程中表现良好
  7. 避免复杂且容易出错的依赖关系和生命周期问题
  8. 快;专为高性能而优化
  9. 很小(~60k jar)
  10. 已被安装超过 1,000,000,000 次的应用在实践中证明
  11. 具有交付线程、订阅者优先级等高级功能。

原文由 humble_wolf 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题