1414
1515package com .firebase .uidemo .database ;
1616
17+ import android .arch .lifecycle .LifecycleRegistry ;
18+ import android .arch .lifecycle .LifecycleRegistryOwner ;
1719import android .os .Bundle ;
1820import android .support .annotation .NonNull ;
1921import android .support .v7 .app .AppCompatActivity ;
3739import com .google .firebase .database .FirebaseDatabase ;
3840import com .google .firebase .database .Query ;
3941
40- public class ChatActivity extends AppCompatActivity implements FirebaseAuth .AuthStateListener , View .OnClickListener {
42+ public class ChatActivity extends AppCompatActivity
43+ implements FirebaseAuth .AuthStateListener , View .OnClickListener , LifecycleRegistryOwner {
4144 private static final String TAG = "RecyclerViewDemo" ;
4245
46+ // TODO remove once arch components are merged into support lib
47+ private final LifecycleRegistry mRegistry = new LifecycleRegistry (this );
48+
4349 private FirebaseAuth mAuth ;
4450 protected DatabaseReference mChatRef ;
4551 private Button mSendButton ;
4652 protected EditText mMessageEdit ;
4753
4854 private RecyclerView mMessages ;
4955 private LinearLayoutManager mManager ;
50- protected FirebaseRecyclerAdapter <Chat , ChatHolder > mAdapter ;
56+ private FirebaseRecyclerAdapter <Chat , ChatHolder > mAdapter ;
5157 protected TextView mEmptyListMessage ;
5258
5359 @ Override
@@ -70,8 +76,10 @@ protected void onCreate(Bundle savedInstanceState) {
7076 mManager .setReverseLayout (false );
7177
7278 mMessages = (RecyclerView ) findViewById (R .id .messagesList );
73- mMessages .setHasFixedSize (false );
79+ mMessages .setHasFixedSize (true );
7480 mMessages .setLayoutManager (mManager );
81+
82+ if (isSignedIn ()) { attachRecyclerViewAdapter (); }
7583 }
7684
7785 @ Override
@@ -81,19 +89,7 @@ public void onStart() {
8189 // Default Database rules do not allow unauthenticated reads, so we need to
8290 // sign in before attaching the RecyclerView adapter otherwise the Adapter will
8391 // not be able to read any data from the Database.
84- if (isSignedIn ()) {
85- attachRecyclerViewAdapter ();
86- } else {
87- signInAnonymously ();
88- }
89- }
90-
91- @ Override
92- public void onStop () {
93- super .onStop ();
94- if (mAdapter != null ) {
95- mAdapter .cleanup ();
96- }
92+ if (!isSignedIn ()) { signInAnonymously (); }
9793 }
9894
9995 @ Override
@@ -147,7 +143,8 @@ protected FirebaseRecyclerAdapter<Chat, ChatHolder> getAdapter() {
147143 Chat .class ,
148144 R .layout .message ,
149145 ChatHolder .class ,
150- lastFifty ) {
146+ lastFifty ,
147+ this ) {
151148 @ Override
152149 public void populateViewHolder (ChatHolder holder , Chat chat , int position ) {
153150 holder .bind (chat );
@@ -182,4 +179,9 @@ private void updateUI() {
182179 mSendButton .setEnabled (isSignedIn ());
183180 mMessageEdit .setEnabled (isSignedIn ());
184181 }
182+
183+ @ Override
184+ public LifecycleRegistry getLifecycle () {
185+ return mRegistry ;
186+ }
185187}
0 commit comments