考虑绑定到 viewModel 的布局数据。更具体地说,布局使用一个布局变量来访问这个底层的 viewModel。每当绑定膨胀时,它的 viewModel 和 lifeCycleOwner 都将被设置。(当然 viewModel 包含一些 liveData,直接绑定到一些视图属性)。
RecyclerView(在 Activity 中创建和设置)传递了一个 viewModel 列表。对于每个视图模型,一个 ViewHolder 是通过膨胀布局的新副本及其数据绑定来制作的。
该onBindViewHolder策略是
ViewHolder.dataBinding.setViewModel(viewModels[position])图。1。layout_counter.xml : 添加到 recyclerView 的单个组件的布局。
主视图模型.java
package com.gmail.example.rough;
import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.util.Timer;
import java.util.TimerTask;
import java.util.UUID;
public class MainViewModel extends androidx.lifecycle.ViewModel {
private MutableLiveData<String> date, …Run Code Online (Sandbox Code Playgroud) val timer=object:CountDownTimer(Long.MAX_VALUE,10){
override fun onTick(p0: Long) {
_mutableLiveData.postValue(newValue)
}
override fun onFinish() {
TODO("Not yet implemented")
}
}.also { it.start() }
Run Code Online (Sandbox Code Playgroud)
从 a 内部ViewModel否则会导致内存泄漏。另一方面使用实现定时器viewModelScope.launch
viewModelScope.launch {
while (true){
_mutableLiveData.postValue(newValue)
delay(10)
}
}
Run Code Online (Sandbox Code Playgroud)
从内部同样ViewModel浪费资源,因为线程在执行其任务后应该退出而不是进入睡眠状态。
我应该使用哪种方式?
我还错过了其他一些惯用的方式吗?
我的问题的上下文是这样的:在 a 中ViewModel,我的计时器实现(当前使用)定期更改a中正在使用的delay私有状态。MutableLiveDataobserveAsState@Composable
android timer kotlin kotlin-coroutines android-jetpack-compose
我有一个 np 数组数组,我想删除与条件匹配的所有元素。我想避免for循环以使其更快。
np 数组的形状为 [N,2]。我想删除第一个元素等于零的所有子数组。
[[1,2],
[0,5], # <--- Remove
[5,1],
[0,3], # <--- Remove
[1,1],
[0,0], # <--- Remove
[5,0],
.....
[5,5]]
Run Code Online (Sandbox Code Playgroud)
我希望有一个只需一行代码的解决方案。我只是无法弄清楚这条线。我希望有人能帮助我。
谢谢。
程序int通过读取值cin并显示其计数。cin用作while循环测试。
奇怪的是,即使使用非整数输入,循环也会增加计数,即,即使在退出流无效之后,循环也至少执行一次。
换句话说,用于输入
2.53
Run Code Online (Sandbox Code Playgroud)
输出是
1
Run Code Online (Sandbox Code Playgroud)
根据Lippman,Lajoie,Moo的C ++ Primer,5e
当我们使用istream作为条件时,其作用是测试流的状态。如果流有效(即,流没有遇到错误),则测试成功。当我们命中文件结尾或遇到无效输入(例如读取非整数值)时,istream变得无效。处于无效状态的istream将导致条件产生false。
由于尝试读取double时流无效,为什么循环仍然执行循环,然后仅在下一次迭代中退出?
码
2.53
Run Code Online (Sandbox Code Playgroud)
初学者,因此我们将不胜感激任何帮助。