参数有 activity 与 fragment 的我就只贴 activity 的了 ,重点看这里引出了一个 Factory,不带Factory的方法只是通过initializeFactoryIfNeeded初始化了一个sDefaultFactory(Factory的实现类): /** * Implementations of {@code Factory} interface are responsible to instantiate ViewModels. */ public interface Factor...
viewModelScope 是一个 ViewModel 的 Kotlin 扩展属性。正如前面所说,它能在 ViewModel 销毁时 (onCleared()方法调用时) 退出。这样一来,只要您使用了 ViewModel,您就可以使用 viewModelScope 在 ViewModel 中启动各种协程,而不用担心任务泄漏。 示例如下: class MyViewModel() : ViewModel() { fun initialize() {...
实现了 使用 Room 框架访问 Android 中的 SQLite 数据库的操作 , 每当数据库中的数据发生变化时 , 就...
OnInitialize:用来初始化View。结合前几篇文章,OnInitialize 用来注册 OnBindingContextChanged 事件以及属性绑定(Binder.Add) OnAppear:用来激活View OnReveal:用来显示View,比如以动画形式(Fade)显示呢还是直接显示 OnRevealed:当View显示完毕时,执行的额外操作,是一个委托(Action) OnHide:开始隐藏View OnHidden:同On...
The ViewPager2 loads VideoFragment for each video. Each fragment initializes ExoPlayer in onViewCreated(). The ViewModel stores playback position and restores it when swiping back. The app ensures only one ExoPlayer instance plays at a time to optimize memory usage....
fun initialize(app: Application) { if (!isInitialized) { preferencesViewModel = ViewModelProvider.AndroidViewModelFactory(app) .create(AppPreferencesViewModel::class.java) GlobalScope.launch(Dispatchers.Default) { waiters.forEach { launch(Dispatchers.Default) { it() } } waiters.clear() } isInitialize...
而作为被观察的对象Activity/Frament则需要实现LifecycleOwner。不过在AndroidX中的Activity/Frament已经默认实现了LifecycleOwner接口,我们只需要在Activity/Fragment中进行如下操作即可使ViewModel的生命周期函数与Activity/Fragment的生命周期函数同步: // 将实现了LifecycleObserver接口的ViewModol实例作为观察者,添加到Activity...
2.3ViewMode 与 Kotlin 协程: viewModelScope 通常情况下,我们使用回调 (Callback) 处理异步调用,这种方式在逻辑比较复杂时,会导致回调嵌套地狱,代码也变得难以理解。而协程同样适用于处理异步调用,它能够让逻辑变得简单的同时,也确保了操作不会阻塞主线程。一段简单的协程代码,真实情景下不要使用: ...
In your MainActivity initialize the viewmodel like this: @AndroidEntryPoint class MainActivity : AppCompatActivity() { private val viewModel: TaskViewModel by viewModels() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) ...
1. Application class has to implement HasActivityInjector, and @Inject a DispatchingAndroidInjector<Activity> to return from the activityInjector() method. 2. In the onCreate() of Application class, we initialize AppInjector in order to automatically inject fragments if they implement Injectable inte...