Android приложение иногда не подключается к базе данных в реальном времени - PullRequest
0 голосов
/ 20 апреля 2020

Я создал базовое c приложение, которое хранит данные для базы данных реального времени firebase. Но есть проблема с приложением или базой данных firebase, я не знаю. Иногда мое приложение не соединяется с базой данных в реальном времени, и для того, чтобы связать его с базой данных, мне нужно переключить режим «В самолете», а затем отключить его, а затем оно успешно подключается к базе данных.

Я столкнулся с эта проблема только в моих телефонах vivo с android версией 9, а все остальные мои мобильные устройства работают правильно.

Совместное использование ссылки Github моего проекта.

Обмен записью экрана моего приложения, чтобы показать вам реальную проблему

Журналы

D/FA: Connected to remote service
D/FA: Application going to the background 
D/WebSocket: ws_5 - timed out on connect
D/WebSocket: ws_5 - closed
D/WebSocket: ws_5 - closing itself 
D/Connection: conn_5 - Realtime connection failed
D/Connection: conn_5 - closing realtime connection 
D/PersistentConnection: pc 0 - Got on disconnect due to OTHER 
D/PersistentConnection: pc 0 - Scheduling connection attempt 
D/ConnectionRetryHelper: Scheduling retry in 2264ms 
D/PersistentConnection: pc 0 - Trying to fetch auth token
D/PersistentConnection: pc 0 - Successfully fetched token, opening connection 
D/Connection: conn_6 - Opening a connection binding to the service failed 
binding to the service failed
D/WebSocket: ws_6 - timed out on connect 
D/WebSocket: ws_6 - closed 
D/WebSocket: ws_6 - closing itself 
D/Connection: conn_6 - Realtime connection failed 
D/Connection: conn_6 - closing realtime connection 
D/PersistentConnection: pc_0 - Got on disconnect due to OTHER 
D/PersistentConnection: pc_0 - Scheduling connection attempt 
D/ConnectionRetryHelper: Scheduling retry in 4252ms
D/PersistentConnection: pc 0 - Trying to fetch auth token 
D/PersistentConnection: pc 0 - Successfully fetched token, opening connection 
D/Connection: conn_7 - Opening a connection 
D/WebSocket: ws_7 - timed out on connect
D/WebSocket: ws_7 - closed 
D/WebSocket: ws_7 - closing itself D/Connection: conn_7 - Realtime connection 
failed D/Connection: conn_7 - closing realtime connection nip  • ***** *inn. 
no- a An+ an A' * Ana tr. ATUPD 

JAVA КОД -

public class MainActivity extends AppCompatActivity {

private EditText Fname,Lname;
private Button show,update;
private RecyclerView disp_data;
private DatabaseReference mUser;
private mAdapter mAdapter;
private List<Users> mList = new ArrayList<>();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Fname = (EditText) findViewById(R.id.Fname);
    Lname = (EditText) findViewById(R.id.Lname);
    show = (Button) findViewById(R.id.show);
    update = (Button) findViewById(R.id.update);
    disp_data = (RecyclerView) findViewById(R.id.disp_data);
    mAdapter = new mAdapter(MainActivity.this,mList);
    LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
    disp_data.setLayoutManager(linearLayoutManager);
    disp_data.setAdapter(mAdapter);

    mUser = FirebaseDatabase.getInstance().getReference().child("Users");

    show.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            displayData();
        }
    });


    update.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            updateData();
        }
    });


}

private void updateData(){
    String pushId = FirebaseDatabase.getInstance().getReference().child("Users").push().getKey();
    final Map<String, Object> messageMap = new HashMap<String, Object>();
    messageMap.put("Fname",Fname.getText().toString());
    messageMap.put("Lname", Lname.getText().toString());

    assert pushId != null;
    mUser.child(pushId).setValue(messageMap).addOnSuccessListener(new OnSuccessListener<Void>() {
        @Override
        public void onSuccess(Void aVoid) {
            Toast.makeText(MainActivity.this, "Data updated sucessfully", Toast.LENGTH_SHORT).show();
        }
    }).addOnFailureListener(new OnFailureListener() {
        @Override
        public void onFailure(@NonNull Exception e) {
            Toast.makeText(MainActivity.this, "Error - "+ e.getMessage(), Toast.LENGTH_SHORT).show();
        }
    });
}


private void displayData(){
   mUser.addValueEventListener(new ValueEventListener() {
       @Override
       public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
           mList.clear();
           for (DataSnapshot snapshot : dataSnapshot.getChildren()){
               Users users = snapshot.getValue(Users.class);
               mList.add(users);
               mAdapter.notifyDataSetChanged();
           }
       }

       @Override
       public void onCancelled(@NonNull DatabaseError databaseError) {

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