# #java #android #firebase-realtime-database
Вопрос:
У меня около 12 тысяч активных пользователей в месяц, приложение представляет собой приложение для обмена валют только для 2 валют, поэтому, естественно, хранить особо нечего, всего 2 номера, курс покупки и курс продажи.
Тем не менее, мое использование загрузки в месяц достигает 4,7 ГБ, почему?
Это код, который запрашивает базу данных в моем родном приложении для Android (Java).:
private void getRefValue(DatabaseReference ref, TextView view) {
ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NotNull DataSnapshot dataSnapshot) {
String value = dataSnapshot.getValue(String.class);
String textData;
if (view.getTag().toString().equals("sellText")) {
textData = "Sell: " value;
editor.putString("sell", value);
} else {
textData = "Buy: " value;
editor.putString("buy", value);
}
editor.apply();
view.setText(textData);
}
@Override
public void onCancelled(@NotNull DatabaseError error) {
// Failed to read value
Log.d("Failed to read", error.getMessage() " " error.getDetails());
}
});
}
Вместо того, чтобы создавать отдельную функцию для каждого обновляемого текстового представления, я проверяю тег представления, чтобы узнать, является ли оно представлением продажи или покупкой, и соответственно обновляю его текст, editor
переменная является редактором SharedPreferences, я использую общие настройки, чтобы показать автономным пользователям последнюю доступную ставку.
Ссылка на базу данных передается в качестве аргумента при вызове функции, она вызывается дважды, по одному разу для каждой записи в базе данных.
Мой код делает что-то не так? Я не очень разбираюсь в Java или родном Android.
Комментарии:
1. Трудно сказать, откуда вы загружаете, основываясь на информации, которой вы поделились. Но загрузки Firebase довольно просто оценить как:
number of users * number of connections * data per connection
, причем последняя изSSL overhead number of reads * size of each read
них . Накладные расходы SSL составляют около 4K, а все остальные номера поступают от вашего кода и пользователей.2. Следуя этому уравнению, я должен получать около 60-130 МБ в месяц, я получаю около 152 МБ В ДЕНЬ, в настоящее время я пытаюсь получить доступ к папке данных/данных моего приложения, чтобы понять, почему размер увеличивается на 15 МБ каждый раз, когда я открываю приложение, также оказывается, что сделать это на телефоне или эмуляторе Huawei сложнее, чем вторгнуться в Нормандию.
Ответ №1:
Я столкнулся с той же проблемой и столкнулся с огромными счетами от Firebase. Проблема в том, что каждый раз, когда пользователь заходит в приложение. Он попадает в базу данных, которая использует данные. Как будто вы использовали общие настройки для автономных пользователей, но вам просто нужно нажать на прослушиватель событий только тогда, когда есть какие-либо изменения в базе данных. Для этого вы можете сделать версии, если в версии есть какие-либо изменения, он проверит наличие данных, в противном случае он покажет данные только из общих предпочтений, даже если на устройстве есть подключение к Интернету.
Я уменьшаю сумму выставления счета только с 2Lacs до 2,5 тыс.
Комментарии:
1. Что ты имеешь в виду? Я уже использую
onDataChange
2. Да, но, как вы сказали, онлайн-пользователь будет получать данные из Firebase каждый раз, когда пользователь заходит в приложение. Если у вас 12000 пользователей в месяц и если каждый пользователь заходит в приложение 10 раз в день, то у вас 120000 пользователей в этом смысле, поэтому, чтобы избежать повторения вызовов, вызывайте ondatachange только при изменении значения в базе данных
3. И как именно я могу узнать, были ли изменены данные, НЕ запрашивая их? существует ли какой-то специальный прослушиватель, который запрашивает данные только при их изменении? как я могу узнать, были ли изменены данные или нет?
4. Да, не могли бы вы, пожалуйста, сказать мне, сколько продаж и ставок делает один пользователь, чтобы сказать, есть ли какой-либо список/ хэш-карта?
5. Нет, просто один курс покупки, состоящий из числа, и другой курс покупки, состоящий из другого числа в той же структуре