在android程序设计中,很多是要要实现异步任务,缓存,获取网络数据,提交请求等需求。Android Query是Github上非常好用的一个框架,简单高效的实现了以上功能,但Android Query的强大不止这些。
AQuery允许开发人员少写/做更多。更简单的代码更易于阅读和维护。
下面的代码完成了同样的工作,但是AQuery是工作变得简洁而优雅:
通常情况下:
public void renderContent(Content content, View view) { ImageView tbView = (ImageView) view.findViewById(R.id.icon); if(tbView != null){ tbView.setImageBitmap(R.drawable.icon); tbView.setVisibility(View.VISIBLE); tbView.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { someMethod(v); } }); } TextView nameView = (TextView) view.findViewById(R.id.name); if(nameView != null){ nameView.setText(content.getPname()); } TextView timeView = (TextView) view.findViewById(R.id.time); if(timeView != null){ long now = System.currentTimeMillis(); timeView.setText(FormatUtility.relativeTime(now, content.getCreate())); timeView.setVisibility(View.VISIBLE); } TextView descView = (TextView) view.findViewById(R.id.desc); if(descView != null){ descView.setText(content.getDesc()); descView.setVisibility(View.VISIBLE); } }
使用AQuery:
public void renderContent(Content content, View view) { AQuery aq = new AQuery(view); aq.id(R.id.icon).image(R.drawable.icon).visible().clicked(this, "someMethod"); aq.id(R.id.name).text(content.getPname()); aq.id(R.id.time).text(FormatUtility.relativeTime(System.currentTimeMillis(), content.getCreate())).visible(); aq.id(R.id.desc).text(content.getDesc()).visible(); }
异步访问网络:
AQuery时访问网络和异步任务变得非常方便,代码如下:
public void asyncJson(){ //ajax方法的第一参数是访问的URL,第二个参数是设置返回的类型,第四个参数是调用的回调方法 String url = "http://www.google.com/uds/GnewsSearch?q=Obama&v=1.0"; aq.ajax(url, JSONObject.class, this, "jsonCallback"); } //json就是返回的数据 public void jsonCallback(String url, JSONObject json, AjaxStatus status){ if(json != null){ //successful ajax call }else{ //ajax error } }