We have 2 Android activities (activity A and activity B)
Suppose that we instantiated a Firebase reference in activity A. Activity A also handles all user authentication (Facebook, Google, and email/password).
Activity B, which is started from activity A using an Android intent, should use the Firebase reference to access some data on the Firebase servers.
Now I was wondering what the best design is to send the Firebase ref from activity A to activity B.
Bundle the Firebase reference with the intent using Java Serializable and use intent.getExtra() in Activity B
Bundle the Firebase reference with the intent using Android Parcelable and use intent.getExtra() in activity B
Initiate the Firebase reference in a Android service and bind each activity to that service
Something else.
The common way to do this is to pass the URL for the data to the new activity. See for example this method from the 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);
}
The new activity then reads the URL and constructs a new Firebase
reference:
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);
The authentication state is indeed maintained between these calls. The Firebase SDK maintains a single connection to the server for an application session and each Firebase
reference is a lightweight reference on top of that.
来源:https://stackoverflow.com/questions/34586309/how-to-transfer-the-firebase-reference-to-another-android-activity