java - 如何将 Firebase 引用转移到另一个 android Activity

标签 java android firebase-authentication google-authentication facebook-authentication

我们有 2 个 Android Activity ( Activity A 和 Activity B)

假设我们在 Activity A 中实例化了一个 Firebase 引用。 Activity A 还处理所有用户身份验证(Facebook、Google 和电子邮件/密码)。

Activity B 是使用 Android intent 从 Activity A 启动的,它应该使用 Firebase 引用来访问 Firebase 服务器上的一些数据。

现在我想知道将 Firebase ref 从 Activity A 发送到 Activity B 的最佳设计是什么。

  1. 使用 Java Serializable 将 Firebase 引用与 Intent bundle 在一起,并在 Activity B 中使用 intent.getExtra()

  2. 使用 Android Parcelable 将 Firebase 引用与 Intent bundle 在一起,并在 Activity B 中使用 intent.getExtra()

  3. 在 Android 服务中启动 Firebase 引用并将每个 Activity 绑定(bind)到该服务

  4. 其他。

最佳答案

执行此操作的常用方法是将数据的 URL 传递给新 Activity 。参见示例 this method来自 Firebase Android Drawing sample :

private void openBoard(String key) {
    Log.i(TAG, "Opening board "+key);
    Toast.makeText(BoardListActivity.this, "Opening board: "+key, Toast.LENGTH_LONG).show();
    Intent intent = new Intent(this, DrawingActivity.class);
    intent.putExtra("FIREBASE_URL", FIREBASE_URL);
    intent.putExtra("BOARD_ID", key);
    startActivity(intent);
}

然后新 Activity 读取 URL 并构造一个新的 Firebase 引用:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Intent intent = getIntent();
    final String url = intent.getStringExtra("FIREBASE_URL");
    final String boardId = intent.getStringExtra("BOARD_ID");
    Log.i(TAG, "Adding DrawingView on "+url+" for boardId "+boardId);
    mFirebaseRef = new Firebase(url);

确实在这些调用之间保持了身份验证状态。 Firebase SDK 为应用程序 session 维护与服务器的单一连接,每个 Firebase 引用都是一个轻量级引用。

关于java - 如何将 Firebase 引用转移到另一个 android Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34586309/

相关文章:

java - 缩小 React 错误#310;在 React 中使用 Chrome 通过 Selenium 使用非缩小的开发环境来获取完整错误和其他有用的警告

firebase - 如何使用 Firebase Auth 同步自定义声明 token

java - 需要 mutator 方法我该怎么做

java - 非直角三角形的三角形边输入输出角

android - native Activity OpenCV4Android 不工作

java - 无法加载类 'org.gradle.api.internal.component.Usage'

iphone - 是否可以使用 ANSI C/C++ 或嵌入式 C 开发实体层以在 Android 和 iPhone 平台中使用?

firebase-authentication - signInWithCustomToken() 与 Firebase 自己的 token

ios - 如何检查电子邮件地址是否已在 iOS 上的 Firebase 中使用?

java - Java 访问修饰符的可访问性范围