在MainActivity onCreate中,我使用okhttp3调用网络类来处理请求。我需要从网络类返回数据,以便在调用类MainActivity中进一步使用逻辑。在调试中,来自网络类的返回数据是正确的,但是当我要在MainActivity的另一个表达式中使用返回数据时,返回数据将为null。
//In MainActivity
Network n = new Network();
n.network("baseLogic", "user", params);
if(n.resp == null){
String resp = n.resp;
Toast toast = Toast.makeText(getApplicationContext(), resp, Toast.LENGTH_SHORT);
toast.show();
}else if (n.resp.equals("0")) {
Intent intent = new Intent(MainActivity.this, Rei.class);
intent.putExtra(EXTRA_MESSAGE, message);
startActivity(intent);
}
下面是从MainActivity内部调用的网络类。 我们从传递的参数中构建了一个URL。 返回值存储在响应时的类变量中,然后由类返回。
public class Network(){
public String resp;
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url(url)
.build();
//resp = client.newCall(request).execute().body().toString();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(okhttp3.Call call, IOException e) {
}
@Override
public void onResponse(okhttp3.Call call, Response response) throws IOException {
if (!response.isSuccessful()) {
throw new IOException("Unexpected code " + response);
}
resp = response.body().string();
response.close();
}
});
return resp;
}
尝试的解决方案: 1)我试图找到一种方法或进程(android启动画面)来暂停MainActivity线程,以便Network类实例可以按时返回MainActivity的数据。 2)剥离任务或asyncTask上的网络类实例。
请帮助