É possível gravar no banco de dados em tempo real do firebase até reiniciar a conexão WIFI

Criei 2 aplicativos, um cliente e um servidor. Quando alguém usando oclient app escreve algo no RDB, isso aciona alguns eventos nos telefones executando oserver app quando o servidor concluir a operação solicitada pelo cliente, ela excluirá do RD

Cada aplicativo faz o que é necessário (o cliente grava e o servidor exclui entradas), o problema surge após alguma inatividade do telefone, para concluir a operação de gravação e exclusão, preciso desligar e ligar a conexão de dados wifi / móvel.

Abaixo, há um trecho de código que mostra como o aplicativo do servidor tenta se comunicar com o RDB da base de firmas para excluir a entrada que foi escrita pelo cliente, isso acontece sempre que uma chamada termina no aplicativo do servidor. BTW, o método onReceive é chamado e não acho que esse problema esteja relacionado à implementação deste código, porque tentei de várias maneiras diferentes corrigir esse problema sem sucesso.

public class CallStateReceiver extends BroadcastReceiver {

public static String prevState = TelephonyManager.EXTRA_STATE_IDLE;
private final String LOG_TAG = "CallStateReceiver";


@Override
public void onReceive(Context context, Intent intent) {


    final PendingResult pendingResult = goAsync();
    Task asyncTask = new Task(pendingResult, intent, context);
    asyncTask.execute();


}

private static class Task extends AsyncTask  {

    private final PendingResult pendingResult;
    private final Intent intent;
    String PREFS_NAME = "MyPrefsFile";
    SharedPreferences serverInfoPrefs;
    String serverName;
    AudioManager audioManager;

    private Task(PendingResult pendingResult, Intent intent, Context context) {
        this.pendingResult = pendingResult;
        this.intent = intent;
        serverInfoPrefs = context. getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
        audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);




    }

    @Override
    protected void onPostExecute(Object o) {
        super.onPostExecute(o);
        pendingResult.finish();
    }

    @Override
    protected Object doInBackground(Object[] objects) {

        Bundle bundle = intent.getExtras();
        if (bundle == null) {
            return null;
        }


        serverName = serverInfoPrefs.getString("serverName", "Servidor1");

        String state = bundle.getString(TelephonyManager.EXTRA_STATE);

        if (state.equalsIgnoreCase(TelephonyManager.EXTRA_STATE_IDLE)
                && !prevState.equalsIgnoreCase(TelephonyManager.EXTRA_STATE_IDLE)) {

            FirebaseDatabase.getInstance().getReference().child("servers").child(serverName).child("current")
                    .child("callRequest").removeValue();
            audioManager.setStreamVolume(AudioManager.STREAM_VOICE_CALL, 5, 0);
            MyAccessibilityService.onCallAlready = false;


        } 

        prevState = state;



        return null;
    }


}




}

Ativei o log de depuração e esta linha (não tenho certeza se isso está relacionado ao problema):

03-02 18:08:55.360 10832-10840/? W/SQLiteConnectionPool: A SQLiteConnection object for database '/data/data/com.google.android.gsf/databases/gservices.db' was leaked!  Please fix your application to end transactions in progress properly and to close the database when it is no longer needed.

E também encontrouist solução, mas não sei como isso se aplica ao firebase

questionAnswers(0)

yourAnswerToTheQuestion