- parameter must be a descendant o
- parameter must be a descendant o
- parameter must be a descendant o
- parameter must be a descendant
- Android崩溃:java.lang.IllegalArgum
- count(): Parameter must be an ar
- bug-parameter must be a descenda
- 升级Xcode12.5 DoraemonKit 编译Error:
- layoutCache[currentClass] = ivar
- Illegal modifier for parameter o
我遇到一个非必现的bug
1. 一个LoginFragment和一个HomeFragment(包含四个Fragment),MainActivity,一个包含退出登录的 MineSettingFragment
2. 用Realm存储用户信息
3. 用Rx观察用户信息的变化实现 登录和退出
查找这个bug说是 焦点的问题,比如EditTextView等等, 但是我发现HomeFragment ,MineSettingFragment没有一个主动获取焦点的view。
MainActivity
disposable = realm().where(Account.class).findAllAsync().asFlowable()
.filter(RealmResults::isLoaded)
.doOnNext(new Consumer<RealmResults<Account>>() {
@Override
public void accept(RealmResults<Account> accounts) throws Exception {
if (accounts.size() > 0) {
EventBus.getDefault().post(Account.current());
}
}
})
.map(new Function<RealmResults<Account>, Boolean>() {
@Override
public Boolean apply(RealmResults<Account> accounts) throws Exception {
return accounts.size() > 0;
}
})
.distinctUntilChanged()
.skip(1)
.subscribe(new Consumer<Boolean>() {
@Override
public void accept(Boolean aBoolean) throws Exception {
if (aBoolean) { //登录
popTo(LoginFragment.class, false, () -> {
startWithPop(HomeFragment.newInstance());
});
} else { // 退出
popTo(HomeFragment.class, false, () -> {
startWithPop(LoginFragment.newInstance());
});
}
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
throwable.printStackTrace();
}
});
退出 ,删除数据库信息
pop();
Realm realm = Realm.getDefaultInstance();
realm.beginTransaction();
realm.deleteAll();
realm.commitTransaction();
realm.close();
这样原因可能是,MineSettingFragment 还没有 pop()时就进行了数据库操作,导致了这个问题。pop之后用 post,在fragment操作之后再进行数据库操作。
pop();
post(new Runnable() {
@Override
public void run() {
Realm realm = Realm.getDefaultInstance();
realm.beginTransaction();
realm.deleteAll();
realm.commitTransaction();
realm.close();
}
});
网友评论