Java 变量赋值时仍然为空
所以我有这个代码:Java 变量赋值时仍然为空,java,android,string,Java,Android,String,所以我有这个代码: String query = null; public String createConnection() { new NetworkRequest(new ResultFromAsync() { @Override public void taskCompleted(String result) { query = result; } }).execute(); retur
String query = null;
public String createConnection() {
new NetworkRequest(new ResultFromAsync() {
@Override
public void taskCompleted(String result) {
query = result;
}
}).execute();
return query;
}
我遵循MVP设计模式,从我的视图中调用它,在一个按钮点击事件中调用此方法,该方法执行并从模型中创建一个网络请求,然后在第行“query=result;”调试时以字符串形式检索JSON它实际上将存储在结果变量中的内容分配给查询,但当它到达“returnquery”行时,它等于null
有人知道为什么将查询分配给结果变量的值时将其设置为null吗?将值分配给
query
的方法是异步执行的,这意味着在异步请求完成之前调用execute()
不会阻塞当前线程,但是马上就回来了。此时变量的值仍然是null
。无法返回尚未返回的值
考虑调用需要
taskCompleted()
回调中的值的代码 @laalto那么对于这种情况,什么是最好的方法呢?doSomething(result)
-或者你想用它做什么。顺便问一下:你是想说在我看来调用taskCompleted方法吗?这两个主意听起来都不好。有了静电,你仍然不知道什么时候读它。当结果可用时,让您正在使用的异步框架调用taskCompleted()
回调,然后对结果执行任何您想要的操作。&这正是它所做的