java 保持Firebase实时数据库连接最小化(https://livinglifetechway.com/keep-your-firebase-realtime-database-connect

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 保持Firebase实时数据库连接最小化(https://livinglifetechway.com/keep-your-firebase-realtime-database-connect相关的知识,希望对你有一定的参考价值。

public class MyApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();

        // your stuff here

        // Manage firebase database connection when in background and foreground
        registerActivityLifecycleCallbacks(new FirebaseDatabaseConnectionHandler());

    }

}
import android.app.Activity;
import android.app.Application;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;

import com.google.firebase.database.FirebaseDatabase;

public class FirebaseDatabaseConnectionHandler implements Application.ActivityLifecycleCallbacks {

    private static final String TAG = FirebaseDatabaseConnectionHandler.class.getSimpleName();

    private int count = 0;
    private final long delayedTimeMillis = 5000; // change this if you want different timeout
    private Handler mHandler = new Handler();

    @Override
    public void onActivityCreated(Activity activity, Bundle bundle) {

    }

    @Override
    public void onActivityStarted(Activity activity) {
        count++;
        Log.d(TAG, "onActivityStarted: count=" + count);
        if (count > 0)
            FirebaseDatabase.getInstance().goOnline();
    }

    @Override
    public void onActivityResumed(Activity activity) {

    }

    @Override
    public void onActivityPaused(Activity activity) {

    }

    @Override
    public void onActivityStopped(Activity activity) {
        count--;
        Log.d(TAG, "onActivityStopped: count=" + count);
        if (count == 0) {

            Log.d(TAG, "onActivityStopped: going offline in 5 seconds..");
            mHandler.postDelayed(new Runnable() {
                @Override
                public void run() {
                    // just make sure that in the defined seconds no other activity is brought to front
                    Log.d(TAG, "run: confirming if it is safe to go offline. Activity count: " + count);
                    if (count == 0) {
                        Log.d(TAG, "run: going offline...");
                        FirebaseDatabase.getInstance().goOffline();
                    } else {
                        Log.d(TAG, "run: Not going offline..");
                    }
                }
            }, delayedTimeMillis);
        }
    }

    @Override
    public void onActivitySaveInstanceState(Activity activity, Bundle bundle) {

    }

    @Override
    public void onActivityDestroyed(Activity activity) {

    }
}

以上是关于java 保持Firebase实时数据库连接最小化(https://livinglifetechway.com/keep-your-firebase-realtime-database-connect的主要内容,如果未能解决你的问题,请参考以下文章

我无法在 Vue.js 中连接 Firebase 实时数据库

Android:Firebase 实时数据库有连接池吗?

Firebase 实时数据库连接被终止:不同的区域

Android Firebase实时数据库互联网连接[重复]

Firebase 实时数据库与第二个数据库的连接

有没有办法让firebase实时数据库存在系统更快地检测断开连接