从Android 6.0上的Doze模式唤醒后,Firebase实时数据库不会更新

时间:2016-09-03 00:05:46

标签: android firebase firebase-realtime-database

我一直致力于开发Android应用程序,该应用程序从Firebase实时数据库中提取数据并使用信息填充RecyclerView。它会更新,直到设备进入休眠模式。当它从打盹模式唤醒时,信息不会重新加载。我必须强制关闭应用程序并重新打开它以获取最新信息,因为设备进入了打盹模式。

我添加了一个“拉动刷新”,尝试强制重新加载数据,但它似乎只是从Firebase设备上的(过时的)缓存中提取。

以下是我在片段中使用的函数来加载来自Firebase的信息

public void loadTweetsFromFirebase() {

    FirebaseDatabase database = FirebaseDatabase.getInstance();
    DatabaseReference tweetsRef = database.getReference("rumourTweets");
    Query query = tweetsRef.limitToFirst(100).orderByChild("timestamp");

    query.keepSynced(true);

    if (listener != null) {
        tweetsRef.removeEventListener(listener);
    }
    tweets.clear();
    adapter.notifyDataSetChanged();

    listener = query.addValueEventListener(
                new ValueEventListener() {
                    @Override
                    public void onDataChange(DataSnapshot dataSnapshot) {
                        for (DataSnapshot obj:
                                dataSnapshot.getChildren()) {

                            Tweet tweet = obj.getValue(Tweet.class);

                            // The keys are the tweet ids for the initial tweet, so we need to re-construct one with the obj key as the tweet id
                            Tweet newTweet = new Tweet(tweet.getCategory(), tweet.getProfileImgURL(), tweet.getTagName(), tweet.getText(), tweet.getTimestamp(), tweet.getUserId(), tweet.getUserName(), obj.getKey(), tweet.getRetweetedTweet(), tweet.getQuotedTweet());
                            tweets.add(newTweet);
                            adapter.notifyItemInserted(tweets.indexOf(newTweet));
                        }
                        refreshLayout.setRefreshing(false);
                        progressBarLayout.setVisibility(View.GONE);
                    }

                    @Override
                    public void onCancelled(DatabaseError databaseError) {
                        Log.w("FB", "getUser:onCancelled", databaseError.toException());
                    }
                });
}

0 个答案:

没有答案