小编dee*_*mar的帖子

程序类型已存在:kotlinx.coroutines.experimental.EventLoopBase

我在我的kotlin安卓应用程序中收到以下错误

Android问题:(3个错误)

程序类型已存在:kotlinx.coroutines.experimental.EventLoopBase消息{kind = ERROR,text =程序类型已存在:kotlinx.coroutines.experimental.EventLoopBase,sources = [未知源文件],工具名称= Optional.of(D8)}

已存在的程序类型:kotlinx.coroutines.experimental.internal.LockFreeLinkedListNode消息{kind = ERROR,text =程序类型已存在:kotlinx.coroutines.experimental.internal.LockFreeLinkedListNode,sources = [未知来源文件],工具名称= Optional.of(D8)}

程序类型已存在:kotlinx.coroutines.experimental.internal.LockFreeMPSCQueueCore消息{kind = ERROR,text =程序类型已存在:kotlinx.coroutines.experimental.internal.LockFreeMPSCQueueCore, sources = [未知源文件],工具名称= Optional.of(D8)}

Java编译器:(4个错误)

引起:com.android.builder.dexing.DexArchiveBuilderException:无法处理/home/deepak/.gradle/caches /modules-2/files-2.1/org.jetbrains.kotlinx/kotlinx-corouti nes-core/0.25.0/5664ba2d20c6dcc88c912cc9666baa7f03203bcd/kotlinx-coroutines-core-0.25.0.jar

引起:com.android.builder.dexing.DexArchiveBuilderException:dexing时出错.

引起:com.android.tools.r8.CompilationFailedException:编译未能完成

引起:com.android.tools.r8.utils.AbortException

下面是我的依赖和kotlin实验协同程序

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation"org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'androidx.appcompat:appcompat:1.0.0-rc01'
implementation 'androidx.constraintlayout:constraintlayout:1.1.2'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.1.0-alpha4'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-alpha4'

implementation 'org.jetbrains.anko:anko:0.10.5'
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:0.25.0'
implementation 'com.android.support:design:28.0.0-rc01'
}

kotlin {
    experimental {
        coroutines "enable"
    }
}
Run Code Online (Sandbox Code Playgroud)

android kotlin build.gradle kotlinx.coroutines

7
推荐指数
2
解决办法
870
查看次数

使用 dagger2 在多个片段中使用相同的视图模型实例

我在我的项目中只使用 dagger2 (不是 dagger-android)。使用多重绑定注入 ViewModel 工作正常。但是以前没有 dagger2 有一个问题,我在多个片段的活动中使用了相同的视图模型实例(使用 fragment-ktx 方法 activityViewModels()),但现在由于dagger2 正在注入视图模型,它总是提供新实例(在每个片段的视图模型的每个片段中使用 hashCode 检查,这只是使用 viewmodel 中断了片段之间的通信。

片段和视图模型代码如下:

class MyFragment: Fragment() {
    @Inject lateinit var chartViewModel: ChartViewModel

    override fun onAttach(context: Context) {
        super.onAttach(context)
        (activity?.application as MyApp).appComponent.inject(this)
    }

}

//-----ChartViewModel class-----

class ChartViewModel @Inject constructor(private val repository: ChartRepository) : BaseViewModel() {
   //live data code...
}
Run Code Online (Sandbox Code Playgroud)

这是视图模型依赖注入的代码:

//-----ViewModelKey class-----

@MapKey
@Retention(AnnotationRetention.RUNTIME)
@Target(AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY_SETTER)
internal annotation class ViewModelKey(val value: KClass<out ViewModel>)

//-----ViewModelFactory class------

@Singleton
@Suppress("UNCHECKED_CAST")
class ViewModelFactory
@Inject constructor( …
Run Code Online (Sandbox Code Playgroud)

android viewmodel android-fragments dagger-2 android-mvvm

5
推荐指数
1
解决办法
4209
查看次数