最近我在android中使用Volley库..它工作正常但我想知道更新UI的最有效方法..我有一个Utils类,它有所有的Volley方法..现在我传递将作为参数更新的所有视图,但我已经读过我可以在我的活动中实现侦听器,然后将它们作为参数传递给Utils类。
所以我的问题是:
哪个更有效以及为什么要像这样更新UI:
public void getSettings(final TextView exampleView) {
JsonObjectRequest jsonRequest = new JsonObjectRequest(Method.GET,
url, (String) null, new Response.Listener<JSONObject>() {
public void onResponse(JSONObject response) {
try {
final String setting = getSettingFromJSON(response);
exampleView.setText(setting);
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
public void onErrorResponse(VolleyError arg0) {
}
});
app.add(jsonRequest);
}
或者我在我的活动中声明听众:
Response.Listener<JSONObject> listener = new Response.Listener<JSONObject>() {
public void onResponse(JSONObject response) {
String setting = Utils.getSettingFromJSON(response);
exampleView.setText(setting);
}
};
然后我将它们作为参数传递给我的utils函数,因此调用将是这样的:
utils.getSettings(listener);
而不是:
utils.getSettings(exampleView);
提前致谢:)
答案 0 :(得分:0)
为什么不使用EventBus之类的东西来管理从请求到活动的回传信息?这样,您就可以将您的网络代码与您的活动/视图分开。使用EventBus和Volley的基本思想如下:
exampleView.setText(setting)
。 有关详细示例,请查看此blogpost或Eventbus&#39; github页面。
答案 1 :(得分:0)
正如我的问题Android/Java: how to delay return in a method
我也使用接口监听器,但是,我在主线程中更新视图,而不是在Utils类
中