title: Simply fetching data from Cloud Firestore but Firestore + ViewModel + LiveData
body: <p>I'm building an app with use of Cloud Firestore. I've already implemented <code>RecyclerView</code> with <code>FirestoreRecyclerAdapter</code> and set to it data from collection. Before I process further I need to understand something:<br>
  1. Inversely to local database (<code>sqlite3</code>, without LiveData) <code>Firestore</code> does send a request to a device when any change in the database occurs, am I right?<br>
  2. Assuming I was right in the "question" above. When I fetch data to the adapter like this:  </p>
  
  <p><strong>In my activity <code>onCreate</code>:</strong>  </p>
  
  <pre><code>val questions = FirebaseFirestore.getInstance().collection("DatabaseStructure")
          val query = questions.orderBy("timestamp", Query.Direction.DESCENDING)
          val options = FirestoreRecyclerOptions.Builder&lt;DatabaseStructure&gt;()
              .setQuery(query, DatabaseStructure::class.java)
              .build()
          firestoreAdapter = FirestoreAdapter(options)
          recyclerView.setHasFixedSize(true)
          recyclerView.layoutManager = LinearLayoutManager(context)
          recyclerView.adapter = firestoreAdapter
  </code></pre>
  
  <p><strong>My data class:</strong></p>
  
  <pre><code>data class DatabaseStructure(
  val question: String = "",
  val description: String? = "",
  val image: String? = "",
  val leftAnswers: Int = 0,
  val rightAnswers: Int = 0,
  val timestamp: com.google.firebase.Timestamp = com.google.firebase.Timestamp(Date()),
  val userName: String? = "Anonymous")
  </code></pre>
  
  <p>Every time activity is recreated, e.g users rotates device, reopens activity, data is fetched from the Cloud Firestore one more time, even if no changes appeared, am I right? To avoid this should I use ViewModel then?</p>
  
  <ol start="3">
  <li><p>Assuming question above was also true and I've implemented ViewModel to my application, that stores data from Cloud Firestore. Now if any change in the database appears, Firestore sends a request to a device to fetch data. Is there still any sense to observe data using <code>LiveData</code>? </p></li>
  <li><p>To sum up, what is the best model to implement <code>Firestore</code> without unnecessary fetching data from database, to make it in the most efficient way and the least power consuming? </p></li>
  </ol>
  
  <p>Thanks in advance!</p>