小编a_d*_*zik的帖子

如何正确处理RxJava(Android)中的onError?

我正在获取设备上已安装应用的列表.这是一个代价高昂的操作,所以我正在使用Rx:

    Observable<List> observable = Observable.create(subscriber -> {
        List result = getUserApps();

        subscriber.onNext(result);
        subscriber.onError(new Throwable());
        subscriber.onCompleted();
    });

    observable
            .map(s -> {
                ArrayList<String> list = new ArrayList<>();
                ArrayList<Application> applist = new ArrayList<>();
                for (Application p : (ArrayList<Application>) s) {
                    list.add(p.getAppName());
                    applist.add(p);
                }
                return applist;
            })
            .subscribeOn(Schedulers.newThread())
            .observeOn(AndroidSchedulers.mainThread())
            .doOnError(throwable -> L.e(TAG, "Throwable " + throwable.getMessage()))
            .subscribe(s -> createListView(s, view));
Run Code Online (Sandbox Code Playgroud)

但是,我的问题是处理错误.通常,用户启动此屏幕,等待加载应用程序,选择最佳选择并转到下一页.但是,当用户快速更改UI时 - 应用程序与NullPointer崩溃.

好的,所以我实现了这个onError.但是它仍然无效,并且在上面的用例中它会抛出这个:

    04-15 18:12:42.530  22388-22388/pl.digitalvirgo.safemob E/AndroidRuntime? FATAL EXCEPTION: main
        java.lang.IllegalStateException: Exception thrown on Scheduler.Worker thread. Add `onError` handling.
                at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:52) …
Run Code Online (Sandbox Code Playgroud)

android reactive-programming rx-java

27
推荐指数
3
解决办法
2万
查看次数

使用wiremock在JsonPath中匹配数据

我正在尝试为我的登录程序创建模拟.我使用POST方法与几个字段和登录对象(使用登录名,密码等)为此我使用JsonPath.代码如下:

{
"request": {
        "method": "POST",
        "url": "/login",
        "bodyPatterns" : [
                {"matchesJsonPath" : "$.method"},
                {"matchesJsonPath" : "$.params[?(@.clientVersion == "1")]"},
                {"matchesJsonPath" : "$.params.login"},
                {"matchesJsonPath" : "$.params.password"}
         ]
    },
    "response": {
            "status": 200,
            "bodyFileName": "login.json"
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在检查clientVersion,因为它与示例类似.

我的问题是,用给定的POST JSON:

{
    "method": "login",
    "params": {
        "clientVersion": "1",
        "login": "test@test.com",
        "password": "681819535da188b6ef2"
    }
}
Run Code Online (Sandbox Code Playgroud)

我收到了404.但是,当我改变时

{"matchesJsonPath" : "$.params[?(@.clientVersion == "1")]"},
Run Code Online (Sandbox Code Playgroud)

正常

{"matchesJsonPath" : "$.params.clientVersion"},
Run Code Online (Sandbox Code Playgroud)

一切正常.

那么 - 如果给定的字段等于某个值,如何使用matchesJsonPath检查内部的wiremock?在我的情况下,如何将它应用于根域,就像方法一样?虽然我们在这里 - 我在检查值是否为空时遇到了类似的问题.我试图应用正则表达式等 - 没有运气.

json jsonpath wiremock

8
推荐指数
2
解决办法
1万
查看次数

如何使用C#解锁用户PC

可能重复:以
编程方式解锁Windows

我正在编写一个可锁定并解锁用户PC的应用程序.锁定机器相对简单.然而解锁对我来说只是简单的黑魔法......

让我们假设,在一些事件之后(例如计时器达到30分钟标记)我的应用程序强制我的PC解锁.

我想用提供的密码解锁最新用户(锁定机器的用户).我知道,你不应该给任何人你的密码,但毕竟 - 我正在写那个程序:)

Sssso ...有什么提示从哪里开始?

c# windows locking winlogon unlock

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

收集方法参数?

我们有一个方法:

public void foo (String s1, String s2, String s3) { 
    ...
}
Run Code Online (Sandbox Code Playgroud)

并且是一个选择的集合.也许hashmap,也许是列表,并不重要.

有没有办法将"转换"集合转换为方法参数?就像是:

public void foo (getParamters(map)) { ... }
Run Code Online (Sandbox Code Playgroud)

是的,当然我能做到

public void foo (map.get(0), map.get(1), map.get(3)) { ... }
Run Code Online (Sandbox Code Playgroud)

但我正在考虑更自动的东西,这可以帮助我解决更大的问题.

java collections parameters methods

3
推荐指数
1
解决办法
191
查看次数