小编sos*_*ite的帖子

注销后清除firebase持久性

  1. 有没有办法清除存储在Firebase数据库持久性中的数据setPersistenceEnabled(true)
  2. 或者最终阻止对设备上先前存储的用户数据的读访问?
  3. 还有一个问题 - 有没有办法检查是否有任何数据等待同步?

在我的应用程序中,我想在用户注销时清除db,并确认将删除未同步的更改.此应用程序将在平板电脑上被许多人使用,并且每个用户将存储许多数据,因此我想清除存储在设备上的不必要数据:

  • 缩小存储使用量
  • 防止未经授权的人读取用户数据

这是一个安全漏洞,因为任何用户,无论是否登录,都可以读取所有以前下载的数据!幸运的是我们没有写访问权限.

我试图在离线和在线模式下自行清除数据库,但数据仍然存在于设备上:

// first clear all data on my own
FirebaseDatabase db = FirebaseDatabase.getInstance();
db.goOffline(); // even when I clear db in online mode data persist on mobile device
db.getReference().setValue(null);

// and then logout
FirebaseAuth.getInstance().signOut();
db.goOnline();
Run Code Online (Sandbox Code Playgroud)

例如数据结构:

{
  "someList": {
    "userId1": {
      "itemId11": {
        "name": "name 11"
      },
      "itemId12": {
        "name": "name 12"
      },
      ...
      "itemId1N": {
        "name": "name 1N"
      }
    }
    "userId2": {
      "itemId21": …
Run Code Online (Sandbox Code Playgroud)

android firebase firebase-realtime-database

28
推荐指数
2
解决办法
9018
查看次数

在Firebase GenericTypeIndicator中使用泛型类型时"遇到未知类型"

我尝试创建具有泛型类型的类,其中我创建函数来读取实体列表.我知道我有两种方法可以做到这一点:(#1)通过循环读取每个实体或(#2)直接创建实体映射.

第二种方式看起来更有效但不幸的GenericTypeIndicator是不能使用泛型类型 - IllegalStateException: Unknown type encountered: T当我在代码中使用它时它返回:

Map<String, T> entityMap =
    dataSnapshot.getValue(new GenericTypeIndicator<Map<String, T>>() {});
Run Code Online (Sandbox Code Playgroud)

所以:

  1. 有没有办法直接将通用类型的实体读入地图?(#2)
  2. 或者只是在循环中读取实体时它们的性能没有任何显着差异(#1)?
public class SomeClass<T extends KeyEntity> {

    private final Class<T> mGenericClass;
    private final String mRefKey;

    public SomeClass(Class<T> clazz, String refKey) {
        mGenericClass = clazz;
        mRefKey = refKey;
    }

    public class KeyEntity {
        private String mKey;

        public KeyEntity() {}

        public String getKey() {
            return mKey;
        }

        public void setKey(String key) {
            mKey = key;
        }
    }

    public interface EntityListListener<T> { …
Run Code Online (Sandbox Code Playgroud)

java generics android firebase firebase-realtime-database

8
推荐指数
1
解决办法
362
查看次数

更新gradle到3.0.0-alpha5后,没有类型SPLIT_LIST的输出

更新gradle到3.0.0-alpha5之后,我的项目无法同步gradle.

我收到了这条消息:

Gradle sync failed: No output of type: SPLIT_LIST

idea.log一些关于我的release变种:

Variant 'release' has no output with type 'SPLIT_LIST'

buildTypes {
    release {
        minifyEnabled true
        shrinkResources true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
Run Code Online (Sandbox Code Playgroud)

gradle

6
推荐指数
1
解决办法
315
查看次数

NotSerializedException:设置 minifyEnabled true 后的 kotlin.UNINITIALIZED_VALUE

minifyEnabled true在应用程序脚本中设置后,build.gradle我开始收到此异常:

\n
Caused by: java.lang.RuntimeException: Parcelable encountered IOException writing serializable object (name = some.package.SomeClass)\n    at android.os.Parcel.writeSerializable(Parcel.java:1767)\n    \xe2\x80\xa6\nCaused by: java.io.NotSerializableException: kotlin.UNINITIALIZED_VALUE\n
Run Code Online (Sandbox Code Playgroud)\n

当我尝试转到class SomeClass : Parcelable另一个活动时发生崩溃。

\n

我尝试将所有应用程序类别列入白名单,-keep class some.package.**.* { *; }但没有成功。

\n

android delegates serializable gradle kotlin

3
推荐指数
1
解决办法
731
查看次数