我正在获取设备上已安装应用的列表.这是一个代价高昂的操作,所以我正在使用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) 我正在尝试为我的登录程序创建模拟.我使用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?在我的情况下,如何将它应用于根域,就像方法一样?虽然我们在这里 - 我在检查值是否为空时遇到了类似的问题.我试图应用正则表达式等 - 没有运气.
可能重复:以
编程方式解锁Windows
我正在编写一个可锁定并解锁用户PC的应用程序.锁定机器相对简单.然而解锁对我来说只是简单的黑魔法......
让我们假设,在一些事件之后(例如计时器达到30分钟标记)我的应用程序强制我的PC解锁.
我想用提供的密码解锁最新用户(锁定机器的用户).我知道,你不应该给任何人你的密码,但毕竟 - 我正在写那个程序:)
Sssso ...有什么提示从哪里开始?
我们有一个方法:
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)
但我正在考虑更自动的东西,这可以帮助我解决更大的问题.