现在,当我像下面那样使用它时,我尝试使用androidX的导航和底部导航栏
supportFragmentManager = getSupportFragmentManager();
navHostFragment =(NavHostFragment)supportFragmentManager.findFragmentById(R.id.frag_nav);
navController = navHostFragment.getNavController();
NavigationUI.setupWithNavController(navigation, navController);
我发现一个问题,每次切换底部的NavigationBar,都会重新创建该片段,目标片段中的所有网络任务都将重做,在AndroidX中切换时如何保持片段的状态?
MyApp 需要在整个上下文中保存一个 User 对象?A、B、C 活动的 xml 使用这个 User 对象,当 A 编辑用户时,我想让 B 和 C 通知更改,如何处理 databinding、livedata 和 viewModel 的这个问题?
以前我让User.class扩展BaseObservable,但是POJO会很麻烦,不能为空,有时User可能为空,比如没有登录。现在我改为使用 LiveData,使 Pojo 变得简单而不扩展 BaseObservable,但是当 A 编辑、B 和 C 不起作用时,我想我需要 ABC 在内存中使用相同的 viewModel 实例,但这会导致多次触发 viewModel 的 onClear()。
我使用基于 nodejs 6 和 firestore 的 firebase 函数,我这样的简单函数总是很慢。我还发现当我在函数中使用 set/add firestore 时,它总是慢可能 5-10 秒,这是 index.js,app 得到响应来自这个 queryUserDoc api。
`
const accountModel = require('./account');
exports.queryUserDoc = functions.https.onCall((data, context) => {
const uid = context.auth.token.uid;
return accountModel.getUserDocByUid(uid)
.then(doc => {
return JSON.stringify(({'errCode': ERROR_SUCCESS, 'data': doc.data()}));
})
.catch(err => {
return JSON.stringify(({'errCode': err}));
});
});
Run Code Online (Sandbox Code Playgroud)
` account.js 如下:
function getUserDocByUid(uid) {
return db.collection(DB_COLLECTION_USER).doc(uid).get();
}
Run Code Online (Sandbox Code Playgroud)
node.js firebase google-cloud-functions google-cloud-firestore
binding.seekbarConstrast.setOnSeekBarChangeListener(object :
SeekBar.OnSeekBarChangeListener {
override fun onProgressChanged(seekBar: SeekBar?, progress: Int, fromUser: Boolean){}
override fun onStartTrackingTouch(seekBar: SeekBar?) {}
override fun onStopTrackingTouch(seekBar: SeekBar?) {
mainViewModel.adjustConstrast(
ProcessUtils.seek2param(
seekBar!!.max, 0f, 4f, seekBar.progress
)
)
}
})
Run Code Online (Sandbox Code Playgroud)
这段代码在Android中,我讨厌下面的代码,太多的seekbars使无意义的代码变得非常长,我可以使用Kotlin或Java来简化侦听器的实现吗?像Android动画适配器一样,只实现我想要使用的东西。谢谢。
override fun onProgressChanged(seekBar: SeekBar?, progress: Int, fromUser: Boolean){}
override fun onStartTrackingTouch(seekBar: SeekBar?) {}
Run Code Online (Sandbox Code Playgroud)