相关疑难解决方法(0)

从JobService观察LiveData

我有一个存储库,用于存放LiveData对象并由两者使用Activity,现在需要JobService(从Firebase调度程序)到ViewModel.

这里有简单的答案Service:从前台服务观察LiveData

但它没有提到如何做同样的事情JobService.

android android-service android-jobscheduler android-livedata android-architecture-components

9
推荐指数
1
解决办法
1540
查看次数

JUnitTest中的MutableLiveData为null

我想写一个单元测试.因此我需要MutableLiveData.我从一个非常基本的设置测试开始,但我无法实例化MutableLiveData对象.当我运行测试时,我总是为空.我必须嘲笑任何东西吗?有什么建议?

@RunWith(MockitoJUnitRunner.class)
public class DefaultLiveDataTest {

    private static final int EXPECTED = 5;

    private final MutableLiveData<Integer> underTest = new MutableLiveData<>();


    @Test
    public void exampleTest() {

    underTest.setValue(EXPECTED); //underTest is Null
    assertEquals(underTest.getValue().intValue(), EXPECTED);

    }
}

java.lang.NullPointerException
at android.arch.core.executor.DefaultTaskExecutor.isMainThread(DefaultTaskExecutor.java:58)
at android.arch.core.executor.ArchTaskExecutor.isMainThread(ArchTaskExecutor.java:116)
at android.arch.lifecycle.LiveData.assertMainThread(LiveData.java:434)
at android.arch.lifecycle.LiveData.setValue(LiveData.java:279)
at android.arch.lifecycle.MutableLiveData.setValue(MutableLiveData.java:33)
at com.mypackage.DefaultLiveDataTest.test_that_live_data_has_default_value(DefaultLiveDataTest.java:22)
Run Code Online (Sandbox Code Playgroud)

的build.gradle

apply plugin: 'com.android.application'

android {
compileSdkVersion 27
defaultConfig {
    applicationId 'com.mypackage.title'
    minSdkVersion 16
    targetSdkVersion 27
    versionCode 1
    versionName '1.0'
    testInstrumentationRunner 'android.support.test.runner.AndroidJUnitRunner'
}

testOptions {
    unitTests.returnDefaultValues = true
}

dependencies {
implementation fileTree(dir: 'libs', …
Run Code Online (Sandbox Code Playgroud)

android android-livedata

8
推荐指数
3
解决办法
3330
查看次数

为什么不使用GlobalScope.launch?

在这里Globalscope强烈建议不要使用。

我有一个简单的用例。对于我收到的每条kafka消息(比如说一个ID列表),我必须将其拆分并同时调用rest服务,等待它完成并继续执行其他同步任务。该应用程序中没有其他需要协程的东西。在这种情况下,我可以摆脱它吗?

注意:这不是android应用程序。它只是在服务器端运行的kafka流处理器。这是一个在Kubernetes中运行的临时性,无状态,容器化(Docker)应用程序(如果愿意的话,它支持Buzzword)

jvm-languages kotlin kotlinx.coroutines

7
推荐指数
3
解决办法
2200
查看次数