因此,我正在编写一个android应用程序。在 Activity 的OnCreate()期间,我通过HTTP GET请求一些JSONObjects。该方法具有一个响应监听器,该监听器在获取JSONObject时会执行某些操作。在OnCreate方法中,我需要使用响应,因此我可以以某种方式对其进行设置,以便OnCreate方法等待响应监听器完成工作吗?
我必须使用多线程吗?这是我正在谈论的代码:
这是OnCreate()中的调用:
...
// Instantiate the RequestQueue.
final RequestQueue queue = Volley.newRequestQueue(this);
executeJson(QUERY_URL);
System.out.println(jsonresponse);
...
这是被调用的方法:
private void executeJson(String url) {
SharedPreferences prefs = this.getSharedPreferences("AppPref", MODE_PRIVATE);
final String token = prefs.getString("token", null);
RequestQueue queue = Volley.newRequestQueue(this);
Map<String, String> params = new HashMap<String, String>();
System.out.println(token);
params.put("access_token", token);
CustomRequest jsonRequest = new CustomRequest(url, params,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
jsonresponse = response;
}
}, this.createRequestErrorListener());
System.out.println(jsonRequest);
queue.add(jsonRequest);
}
我意识到,简单的Thread.Sleep()会使我的应用完全进入休眠状态,因此这不是解决方案。
该 Activity 的目的是成为“加载 Activity ”-一旦用户想要访问他的数据并为该数据 Activity 创建一个意图,它就会弹出,并在加载数据后将其自身销毁。
最佳答案
是的,您需要在后台线程中执行请求。使用AsyncTask或其他方法。您不想在UI线程上执行任意长时间运行的请求,也不想“暂停” UI线程以等待请求返回。阅读Android Processes and Threads以获取更多有关在Android中使用线程的信息。
关于java - Java:在主线程中等待额外方法中的响应监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31881533/