2016-09-29 2 views
0

Я получаю данные о Firebase время от времени, потому что я отслеживаю чей-то GPS. То, что кто-то сохраняет свое местоположение в промежутке 5 минут, чтобы я мог отслеживать его gps. Но моя проблема в том, как получить данные из Firebase с интервалом в 5 минут?Как получать данные о Firebase время от времени?

Или существует ли какой-либо другой способ, кроме этого?

Заранее спасибо. :)

ответ

4

Так что если кто-то обновляет свое местоположение каждые пять минут, то вам действительно не нужно запускать CounterDownTimer на вашей стороне, чтобы отслеживать местоположение каждые пять минут. Поэтому я думаю, вам просто нужно добавить слушателя к этому узлу в Firebase, который вы хотите отслеживать.

Итак, это простая реализация для вас. Скопировано из Firebase Tutorial

Firebase ref = new Firebase("https://docs-examples.firebaseio.com/web/saving-data/fireblog/posts"); 
// Attach an listener to read the data at our posts reference 
ref.addValueEventListener(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot snapshot) { 
     System.out.println(snapshot.getValue()); 
    } 
    @Override 
    public void onCancelled(FirebaseError firebaseError) { 
     System.out.println("The read failed: " + firebaseError.getMessage()); 
    } 
}); 

Я копирую цитаты оттуда тоже. Чтобы вы знали, что это служит вашей цели.

Этот метод будет вызываться в любое время новые данные добавляются в наш Firebase ссылки, и мы не должны писать дополнительный код, чтобы сделать это случиться.

Таким образом, каждый раз, когда человек, которого вы хотите отслеживать, обновляет свое местоположение, вы получите обратный вызов в указанном выше методе и предпримите необходимые действия. Вам действительно не нужно внедрять механизм опроса для отслеживания. Так работает Firebase.

+0

да, ответ работает отлично. но вместо добавления нам нужно только обновить данные. Есть ли способ для этого? – tin

+0

Этот метод обратного вызова будет вызван и в случае обновления. Однако имя запутывает. –

+1

Если вы не возражаете, я приведу пример. Я попытался изменить/обновить широту и долготу одного конкретного ребенка на «Firebase» и при проверке работающего приложения вместо удаления старого маркера и отображения текущего маркера. оба они будут отображаться. но если я собираюсь закрыть приложение и снова открыть его, маркер отобразит курсорный маркер :) Надеюсь, вы поймете heheh – tin

1

Нет необходимости предоставлять какой-либо сервис Планировщика для извлечения данных из firebase.

Как Firebase обеспечивают базу данных в режиме реального времени .. всякий раз, когда вы нажимаете на данные Firebase базы данных слушатель будет вызывать, и вы можете получить ваши данные ..

Реализовать следующие Listener, с помощью этого вы можете восстановить данные, когда база данных получить обновление ,

DatabaseReference mDatabase =FirebaseDatabase.getInstance().getReference(); 


ValueEventListener yourModelListener = new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     // Get YOURMODEL object and use the values to update the UI 
     YourModel mModel = dataSnapshot.getValue(YourModel.class); 
     Log.e("Data : ",""+mModel); 

    } 

    @Override 
    public void onCancelled(DatabaseError databaseError) { 
     // Getting Post failed, log a message 
     Log.w(TAG, "loadPost:onCancelled", databaseError.toException()); 

    } 
}; 

mDatabase.addValueEventListener(yourModelListener); 

Для получения более подробной информации о Приёмниках .. https://firebase.google.com/docs/database/android/retrieve-data

Смежные вопросы