Непоследовательное поведение для базы данных Firebase Realtime - PullRequest
0 голосов
/ 13 ноября 2018

Я пытаюсь обновить данные в базе данных Firebase Realtime через приложение для Android. Он будет работать только изредка после того, как я открою приложение и подожду некоторое время. Большую часть времени это не работает. В моем случае, работающие средства означают, что данные обновляются в облаке. Мне интересно, почему это иногда работает, а иногда не работает. В Logcat нет ошибок или предупреждений. Как только он заработает, он продолжит работать, пока приложение не будет перезапущено.

Класс DbHelper

public class DbHelper {
    static final String TAG = "ttt";

    int count = 0;

    private static FirebaseDatabase database = FirebaseDatabase.getInstance();
    private static DatabaseReference myRef = database.getReference("message");

    TextView tv;

    public DbHelper(final TextView tv){
        this.tv = tv;

        myRef.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                String text = dataSnapshot.getValue(String.class);
                tv.setText(text);
                Log.d(TAG, "Value is: " + text);
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {
                Log.w(TAG, "Failed to read value.", databaseError.toException());
            }
        });
    }

    public void testing(){
        myRef.setValue("test"+count++);
    }
}

MainActivity

public class MainActivity extends AppCompatActivity {
    TextView textTesting;
    DbHelper dbHelper;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        textTesting = (TextView)findViewById(R.id.text_testing);
        dbHelper = new DbHelper(textTesting);

        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                dbHelper.testing();
            }
        });
    }
}

Добавлена ​​

DatabaseReference connectedRef = FirebaseDatabase.getInstance().getReference(".info/connected");
connectedRef.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot snapshot) {
        boolean connected = snapshot.getValue(Boolean.class);
        if (connected) {
            Log.d(TAG, "connected");
        } else {
            Log.d(TAG, "not connected");
        }
    }

    @Override
    public void onCancelled(DatabaseError error) {
        System.err.println("Listener was cancelled");
    }
});

Logcat

11-14 20: 26: 58,956 19329-19384 /? V / FA: попытка подключения уже выполняется

11-14 20: 26: 58,956 19329-19384 /? V / FA: попытка подключения уже выполняется

11-14 20: 26: 58,961 19329-19384 /? V / FA: деятельность возобновлена, время: 167270724

11-14 20: 26: 58,986 19329-19384 /? D / FA: подключен к удаленному сервису

11-14 20: 26: 59.001 19329-19329 /? I / Хронология: Хронология: Идентификатор Activity_idle: android.os.BinderProxy@34fb88b7 время: 15941479

11-14 20: 26: 59,006 19329-19384 /? V / FA: Обработка поставленных в очередь сервисных задач: 4

11-14 20: 26: 59,056 19329-19336 /? I / art: игнорирование второго отладчика - принятие и удаление

11-14 20: 26: 59,541 19329-19329 /? D / ViewRootImpl: ViewPostImeInputStage ACTION_DOWN

11-14 20: 26: 59,631 19329-19329 /? D / ttt: значение равно: test0

11-14 20: 27: 02.366 19329-19329 /? D / ViewRootImpl: ViewPostImeInputStage ACTION_DOWN

11-14 20: 27: 02.451 19329-19329 /? D / ttt: значение: test1

11-14 20: 27: 04.166 19329-19384 /? V / FA: бездействие, отключение от услуги

11-14 20: 28: 07.721 19329-19329 /? D / FA: сервисное соединение приостановлено

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...