当前位置: 首页 > 知识库问答 >
问题:

Dagger Hill“辅助”和“ViewModelInject”已弃用。在Dagger Hill View模型1.0.0-alpha03中

郑波
2023-03-14

在Dagger Hill View模型1.0.0-alpha01中

    implementation "androidx.hilt:hilt-lifecycle-viewmodel:1.0.0-alpha01"
    implementation 'com.google.dagger:hilt-android:2.28-alpha'
    kapt 'androidx.hilt:hilt-compiler:1.0.0-alpha01'
    kapt 'com.google.dagger:hilt-android-compiler:2.28-alpha'

我可以使用以下

class MyViewModel @ViewModelInject constructor(
    private val repository: Repository,
    @Assisted private val savedStateHandle: SavedStateHandle
) : ViewModel(), LifecycleObserver {

    // Some codes...
}

然而,当我迁移到匕首柄视图模型1.0.0-alpha03时

    implementation "androidx.hilt:hilt-lifecycle-viewmodel:1.0.0-alpha03"
    implementation 'com.google.dagger:hilt-android:2.31.2-alpha'
    kapt 'androidx.hilt:hilt-compiler:1.0.0-alpha03'
    kapt 'com.google.dagger:hilt-android-compiler:2.31.2-alpha'

我收到了警告

'Assisted' is deprecated. Deprecated in Java
'ViewModelInject' is deprecated. Deprecated in Java
'ViewModelInject' is deprecated. Deprecated in Java
'Assisted' is deprecated. Deprecated in Java

新的工作方式是什么?

共有3个答案

马寒
2023-03-14

@ViewModel Inject已被弃用,并已被@HiltViewModel替换。

使用HiltViewModel注释的ViewModel将由HiltViewModelFactory创建。包含用 Inject 注释的构造函数的 HiltViewModel 将在 Dagger's Spinal 注入的构造函数参数中定义其依赖项。https://dagger.dev/api/latest/dagger/hilt/android/lifecycle/HiltViewModel

一个简单的ViewModel现在如下所示:

@HiltViewModel
class MainViewModel @Inject constructor(application: Application) :
AndroidViewModel(application) {
}

or

@HiltViewModel
class MainViewModel @Inject constructor() :
ViewModel() {
}

whatever your use case might be.
东方谦
2023-03-14

在匕首刀柄的最后一次更新中,他们做了一些更改,所以在您的情况下,您可以使用@HiltViewModel@Inject将其与ViewModel一起使用。

@HiltViewModel
class MyViewModel @Inject constructor(
    private val repository: Repository,
    private val savedStateHandle: SavedStateHandle
) : ViewModel(), LifecycleObserver {
    // Some codes...
}

此外,如果您使用的是应用程序组件,则在最新更新中,它将更改为单例组件
所以在你的模块类中是这样。

@Module
@InstallIn(SingletonComponent::class.java)
object hiltmodel....{}
孙志
2023-03-14

在alpha03中,现在使用新的@HiltViewModel和正常的@Inject,如下所示。

@HiltViewModel
class MyViewModel @Inject constructor(
    private val repository: Repository,
    private val savedStateHandle: SavedStateHandle
) : ViewModel(), LifecycleObserver {

    // Some code
}
 类似资料:
  • 问题内容: 我只是迁移到Spring MVC 版本,但突然在Eclipse STS中将WebMvcConfigurerAdapter标记为已弃用 我该如何删除! 问题答案: 从Spring 5开始,你只需要实现接口 这是因为Java 8在接口上引入了覆盖该类功能的默认方法

  • 我只是迁移到Spring mvc版本,但突然在eclipse STS WebMvcConfigrerAdapter中被标记为不建议使用 我怎么才能把它拿走!

  • 我刚开始编译iOS 11,注意到苹果现在宣布了这个属性 由于不赞成: https://developer.apple.com/documentation/uikit/uiviewcontroller/1621372-automaticallyadjustsscrollviewin iOS 11中是否有其他属性修复此警告? 默认值会保持为真吗?或者将来会如何处理?

  • 问题内容: 我将JDK1.8与JDK Compilance JavaSE-1.7,Eclipse Luna和Apache httpclient 4.4.1一起使用。 我在Eclipse中收到警告,并且已弃用。这些课程有哪些替代方法? 问题答案: 我实际上只是在看这个,似乎HttpCLient SSLContexts类正在从org.apache.http.conn.ssl.SSLContexts移到

  • 自版本1.8后已弃用:程序包仅包含一个模板标记,并已移至内置标记(lorem)。

  • 问题内容: 今天,我决定将我的android应用程序从Java转换为Kotlin!:)但是,当我输入以下内容时,我感到非常惊讶: 然后Android Studio告诉我:“’getActionView(MenuItem!):View!’ 已弃用。Java中已弃用“ 因此,在问您解决方案之前,我先问谷歌解决方案是什么,我相信我找到了解决方案:“直接使用getActionView()”。 所以我像这样