如何将Firebase引用转移到另一个Android活动

时间:2016-01-04 07:14:43

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

我们有2项Android活动(活动A和活动B)

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

活动B(使用Android意图从活动A启动)应使用Firebase参考来访问Firebase服务器上的某些数据。

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

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

  2. 使用Android Parcelable将Firebase参考与意图捆绑在一起,并在活动B中使用intent.getExtra()

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

  4. 其他。

1 个答案:

答案 0 :(得分:3)

执行此操作的常用方法是将数据的URL传递给新活动。例如,请参阅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);
}

然后新活动会读取网址并构建新的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为应用程序会话维护与服务器的单一连接,并且每个Firebase引用都是一个轻量级引用。