setPersistenceEnabled(true)?在我的应用程序中,我想在用户注销时清除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) 我尝试创建具有泛型类型的类,其中我创建函数来读取实体列表.我知道我有两种方法可以做到这一点:(#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)
所以:
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) 更新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) minifyEnabled true在应用程序脚本中设置后,build.gradle我开始收到此异常:
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\nRun Code Online (Sandbox Code Playgroud)\n当我尝试转到class SomeClass : Parcelable另一个活动时发生崩溃。
我尝试将所有应用程序类别列入白名单,-keep class some.package.**.* { *; }但没有成功。