Rik*_*avi 10 java multithreading android json
我只是想知道 - 在主应用户界面中应该在Android应用程序中解析JSONObject或JSONArray从网络服务器接收的内容,还是应该交付给另一个?
例如,我正在使用Volley库:
private void fetchResults(){
RequestQueue queue = Volley.newRequestQueue(mContext);
String url = AuthenticationRequester.URL_GET_ALL_ORDERS;
JsonArrayRequest jsonDepartureObj = new JsonArrayRequest(url, new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray jsonArray) {
iVolleyCallback.onJSONArraySuccess(jsonArray);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d(TAG, "Error: " + error.getMessage());
// hide the progress dialog
}
});
queue.add(jsonDepartureObj);
}
Run Code Online (Sandbox Code Playgroud)
那么我应该把 iVolleyCallback.onJSONArraySuccess(jsonArray);另一个线程执行还是可以维护主UI线程?
让我们假设传入的JSON很大,需要一些时间才能继续?
同样的问题涉及AsyncTask以及使用Android中的Web服务的其他可能方式.
最好,每个需要很长时间的任务都应该在另一个线程中处理,以避免过载MainThread:
AsyncTasks 理想情况下应该用于短操作(最多几秒钟)。如果您需要保持线程长时间运行,强烈建议您使用 java.util.concurrent 包提供的各种 API,例如执行器、ThreadPoolExecutor和FutureTask。
所以如果你知道你有大数据并且需要时间,你会使用new thread,但如果数据很小并且需要更少的时间,为什么要冒这个风险呢?也将其移至新线程
| 归档时间: |
|
| 查看次数: |
1913 次 |
| 最近记录: |