0
にsqliteの中firebaseと店からバルク値を取得し、私のサーバーは、単一の、単一の方法で3〜4分こんにちは私はfirebaseをしようとしていたAndroidアプリ
カントに私のアプリと同期取得された約300の記録を持っていますそれは50何かのセットでレコードを取得するようなものですか? 非常に長い時間が経過してもユーザーがオンラインになる場合は、このバッチ処理が必要です。
ユーザーがアプリを初めてインストールした場合は、その後も、私はあなたがQuerying dataを試してみました、私は
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Log.e(TAG, "addListenerForSingleValueEvent:onDataChange" + dataSnapshot.getValue());
reference.removeEventListener(valueEventListener);
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.e(TAG, "addListenerForSingleValueEvent:onCancelled" + databaseError.getMessage());
}
};
と
public class DBService extends Service {
private static final String TAG = DBService.class.getName();
private StartApplication application;
private ObjectMapper objectMapper;
@Override
public void onCreate() {
super.onCreate();
application = ((StartApplication) getApplication());
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference reference = database.getReference();
objectMapper = new ObjectMapper();
ChildEventListener childEventListener = new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String previousChildName) {
try {
String json = objectMapper.writeValueAsString(dataSnapshot.getValue());
Job job = objectMapper.readValue(json, Job.class);
ContentValues values = ContentValuesParser.parseJobs(job);
Uri uri = getContentResolver().insert(TableContract.JobsEntry.CONTENT_URI, values);
Log.d(TAG, "child add id " + job.getId() + " Uri " + uri.getEncodedPath());
} catch (Exception e) {
Log.e(TAG, e.getMessage(), e);
}
//Uri uri = getContentResolver().insert(TableContract.JobsEntry.CONTENT_URI, values);
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String previousChildName) {
try {
String json = objectMapper.writeValueAsString(dataSnapshot.getValue());
Job job = objectMapper.readValue(json, Job.class);
ContentValues values = ContentValuesParser.parseJobs(job);
Uri uri = getContentResolver().insert(TableContract.JobsEntry.CONTENT_URI, values);
Log.d(TAG, "child changed id " + job.getId() + " Uri " + uri.getEncodedPath());
} catch (Exception e) {
Log.e(TAG, e.getMessage(), e);
}
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String previousChildName) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
};
reference.child("jobs").addChildEventListener(childEventListener);
}
@Override
public IBinder onBind(Intent intent) {
return null;
}}
firebaseにクエリパラメータを適用できます。このリンクを確認してください:https://firebase.google.com/docs/database/android/retrieve-data#data-order –
私はすべてのオブジェクトにdatetimeパラメータを追加し、そのクエリに基づいてORベースを自動的に追加または作成します日付? –
'push()'を呼び出すと、Firebaseは一意になり常に増加することが保証されたキーを自動生成します。したがって、 'reference.orderByKey()。startAt(lastSeenKey)'を使って新しい項目だけを取得することができます。 –