从离线状态返回后防止写入Firebase [Android]

时间:2016-01-06 03:37:04

标签: android firebase

我了解Firebase能够在离线时本地存储数据,并在设备重新联机时执行写入。

但是我想在我的应用程序中为某些写入禁用此功能,因为我想阻止用户对数据库进行垃圾邮件。谢谢。

3 个答案:

答案 0 :(得分:1)

根据弗兰克的说法,我们无法控制写入队列。因此,我决定编写一个实用程序来检查网络连接。只有在有连接的情况下才会执行写入。

NetworkUtil.java:

public class NetworkUtil {

    private Context context;

    public NetworkUtil(Context context) {
        this.context = context;
    }

    public boolean hasNetwork() {
        ConnectivityManager mConnectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        final NetworkInfo info = mConnectivityManager.getActiveNetworkInfo();
        if (info == null || !info.isConnected())
            return false;
        else
            return true;
    }

}

我将这些内容添加到我的活动中:

/* Check for network */
NetworkUtil networkUtil = new NetworkUtil(getApplicationContext());
boolean hasNetwork = networkUtil.hasNetwork();

if (hasNetwork)
    /* perform write to firebase */

答案 1 :(得分:0)

所有写入都排队,直到再次连接到Firebase服务器。没有API来控制哪些写入排队,哪些不排队。

唯一的漏洞是transactions当前没有持久化到磁盘,因此在重新启动应用程序时会丢失。

答案 2 :(得分:0)

不确定是否有帮助,但是数据库有purgeOutstandingWrites()

com.google.firebase.database.FirebaseDatabase.getInstance(app).purgeOutstandingWrites();

clearPersistence()(用于Firestore)。

FirebaseFirestore.getInstance().clearPersistance();