我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Android之使用Android-query框架开发实战(二)

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Android之使用Android-query框架开发实战(二)

在上篇文章跟大家介绍了Android之使用Android-query框架开发实战(一),本文继续跟大家介绍有关Android-query框架。具体内容请看下文。

异步网络:

1. 添加权限:<uses-permission android:name="android.permission.INTERNET" /> 

2. 支持的类型 

JSONObject
JSONArray
String (HTML, XML)
XmlDom (XML parsing)
XmlPullParser (Large XML files)
byte array
User defined custom type (Transformer)
Bitmap

3. 以Json数据为例,注意,红色部分是随你请求的数据类型一起改变


String url = "http://www.google.com/uds/GnewsSearch?q=Obama&v=1.0";  
  aq.ajax(url, JSONObject.class, new AjaxCallback<JSONObject>() {
    @Override
    public void callback(String url, JSONObject json, AjaxStatus status) {      
      if(json != null){
        //successful ajax call, show status code and json content
        Toast.makeText(aq.getContext(), status.getCode() + ":" + json.toString(), Toast.LENGTH_LONG).show();      
      }else{
        //ajax error, show error code
        Toast.makeText(aq.getContext(), "Error:" + status.getCode(), Toast.LENGTH_LONG).show();
      }
    }
 }); 

      上面的形式也可以写成下面一样,他们是无条件对等


public void asyncJson(){  
  //perform a Google search in just a few lines of code  
  String url = "http://www.google.com/uds/GnewsSearch?q=Obama&v=1.0";    
  aq.ajax(url, JSONObject.class, this, "jsonCallback");  
}
public void jsonCallback(String url, JSONObject json, AjaxStatus status){
  if(json != null){    
    //successful ajax call   
  }else{   
    //ajax error
  }
} 
  

再举一个使用AQuery的XmlDom解析xml的例子,如果XML过大,使用XMLPullParser


public void xml_ajax(){   
  String url = "https://picasaweb.google.com/data/feed/base/featured?max-results=8";    
  aq.ajax(url, XmlDom.class, this, "picasaCb");   
}

public void picasaCb(String url, XmlDom xml, AjaxStatus status){
 // 返回一系列为entry的结点,并把其add进list
  List<XmlDom> entries = xml.tags("entry");    
  List<String> titles = new ArrayList<String>();
  String imageUrl = null;
  for(XmlDom entry: entries){
    titles.add(entry.text("title")); //循环把第一个结点为title的文本放进title
    imageUrl = entry.tag("content", "type", "image/jpeg").attr("class="lazy" data-src");//把第一个结点为content,属性为type,属性值为image/jpeg的class="lazy" data-src属性值赋予给imageUri
  }
  aq.id(R.id.image).image(imageUrl);
}   

4. 如果你想指定保存文件的位置,使用download方法


String url = "https://picasaweb.google.com/data/feed/base/featured?max-results=16";    
File ext = Environment.getExternalStorageDirectory();
File target = new File(ext, "aquery/myfolder/photos.xml");    
aq.progress(R.id.progress).download(url, target, new AjaxCallback<File>(){
  public void callback(String url, File file, AjaxStatus status) {
    if(file != null){
      showResult("File:" + file.length() + ":" + file, status);
    }else{
      showResult("Failed", status);
    }
  }
 });

5. 自定义类型(文档例子是gson数据使用对象解析),详细见文档

6. 使用Http Post (Multiple)


private void aync_multipart(){  
  String url = "https://graph.facebook.com/me/photos";  
  Map<String, Object> params = new HashMap<String, Object>();
  params.put("message", "Message");  
  //Simply put a byte[] to the params, AQuery will detect it and treat it as a multi-part post
  byte[] data = getImageData();
  params.put("source", data);  
  //Alternatively, put a File or InputStream instead of byte[]
  //File file = getImageFile();   
  //params.put("source", file);  
  AQuery aq = new AQuery(getApplicationContext());
  aq.auth(handle).ajax(url, params, JSONObject.class, this, "photoCb");  
}

7. 使用ajax是很容易达到缓存的


String url = "http://www.google.com";
// 返回最近15分钟内的缓存副本,如果expire为-1,内容将会立即更新且缓存
long expire = 15 * 60 * 1000;
aq.ajax(url, String.class, expire, new AjaxCallback<String>() {
 @Override
 public void callback(String url, String html, AjaxStatus status) {  
  showResult(html);
 }  
});

8. 使缓存无效


public void callback(String url, JSONObject json, AjaxStatus status) {
  if(json != null){
    if("1".equals(json.optString("status"))){
      //do something
    }else{
      // 不缓存
      status.invalidate();
    }
  }
}

9. 同步调用:如果ajax调用是在新开的线程,sync方法能够阻塞线程,直到ajax调用完毕,如果sync方法用在主线程将会引起Exception


String url = "http://www.google.com/uds/GnewsSearch?q=Obama&v=1.0";  
AjaxCallback<JSONObject> cb = new AjaxCallback<JSONObject>();   
cb.url(url).type(JSONObject.class);   
aq.sync(cb);
JSONObject jo = cb.getResult();
AjaxStatus status = cb.getStatus();

以上就是小小编跟大家就介绍的Android之使用Android-query框架开发实战(二),希望大家喜欢。

您可能感兴趣的文章:六款值得推荐的android(安卓)开源框架简介Android Retrofit 2.0框架上传图片解决方案简略分析Android的Retrofit应用开发框架源码举例讲解Android应用开发中OTTO框架的基本使用Android通用流行框架大全【整理】Android中XUtils3框架使用方法详解(一)Android AndBase框架使用封装好的函数完成Http请求(三)Android最基本的异步网络请求框架Android学习之Flux架构入门


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Android之使用Android-query框架开发实战(二)

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Android之使用Android-query框架开发实战(二)

在上篇文章跟大家介绍了Android之使用Android-query框架开发实战(一),本文继续跟大家介绍有关Android-query框架。具体内容请看下文。 异步网络:1. 添加权限:
2022-06-06

Android之使用Android-query框架开发实战(一)

开发Android使用Android-query框架能够快速的,比传统开发android所要编写的代码要少得很多,容易阅读等优势。 下载文档及其例子和包的地址:http://code.google.com/p/android-query/
2022-06-06

android开发框架afinal使用方法小结

本文实例为大家分享了android afinal使用方法,供大家参考,具体内容如下 1.注解功能 1)继承:FinalActivity ( 需要复制 afinal_0.5.1_bin.jar到lib下) 2)@ViewInject()pub
2022-06-06

Android Studio开发(二)使用RecyclerView

Android Studio开发(二)使用RecyclerViewAndroid Studio开发(二)RecyclerView一、任务需求二、Recycler View梳理1. Fragment, Adapter, RecyclerVie
2022-06-06

详解Android之图片加载框架Fresco基本使用(二)

PS:最近看到很多人都开始写年终总结了,时间过得飞快,又到年底了,又老了一岁。学习内容: 1.进度条 2.缩放 3.ControllerBuilder,ControllerListener,PostProcesser,Image Reque
2022-06-06

Android开发之利用Activity实现Dialog对话框

前言在Android中经常要使用Dialog来实现一些提示以及一些特殊的效果,而且样式也不一样,每次都得查一大堆资料,还不一定能解决。对话框是个好东西,创建简单有实用。当下的开发中,很多的开发者反而更喜欢使用activity来代替对话框,至
2022-06-06

Android XUtils3框架的基本使用方法(二)

上一篇Android中XUtils3框架使用方法详解(一)文章,主要介绍了XUtil3的注解模块,网络模块,图片加载模块,今天给大家带来数据库模块的讲解,现在主流的ORM框架很多,比如OrmLite,GreenDao,Active Andr
2022-06-06

Android开发之PreferenceActivity的使用

PreferenceActivity是Android中的一个特殊的Activity,用于展示和管理应用程序的偏好设置。通过PreferenceActivity,开发者可以很方便地创建一个设置界面,并将用户的偏好设置保存到SharedPref
2023-09-28

Android IoT开发实战 | 07 - 常用控件的使用

文章目录1. TextView2. Button2.1. 布局2.2. 监听器3. EditText4. ImageView 1. TextView 使用示例:4. ImageView 使用示例:接收更多精彩文章及资源推送,欢迎订阅我的微信
2022-06-06

Android开发实战之漂亮的ViewPager引导页

目前很多软件安装时都会出现引导页面,用户体验很好。 下面就来DIY下: 因为视频上传很麻烦,所以截图了。 首先看看效果图:点击小点可自由切换,滑动也可以自由切换,最后一个导航页添加了点击跳转。 开始实现引导页: 一、采集需要的图片放入dra
2022-06-06

Android app开发中Retrofit框架的初步上手使用

Retrofit 2.0 先来说一下Retrofit 2.0版本中一些引人注意的地方。 在Retrofit 2.0中,最大的改动莫过于减小库的体积,首先,Retrofit 2.0去掉了对所有的HTTP客户端的兼容,而钟情于OkHttpCli
2022-06-06

Android开发之Android studio的安装与使用

该专题的目的:学习Android studio的特性和技巧,学习Gradle的黑魔法,学习Android的最热框架,学习Android5.0以上的新特性。 该专题的行文顺序:从Android studio的特性和相关技巧以及在工作和学习中使
2022-06-06

Android开发之开发者头条(二)实现左滑菜单

在上篇文章给大家介绍了Android开发之开发者头条(一)启动页实现,感兴趣的朋友可以参考下。 title: 带你实现开发者头条(二) 实现左滑菜单tags: 左滑菜单,android 自带侧滑,DrawerLayoutgrammar_cj
2022-06-06

Android使用开源框架ANDROID-IMAGE-INDICATOR实现图片轮播部署

之前的博文中有介绍关于图片轮播的实现方式,分别为(含超链接): 1、《Android中使用ViewFlipper实现屏幕切换》 2、《Android中使用ViewPager实现屏幕页面切换和页面轮播效果》 3、《Android中使用Imag
2022-06-06

android 开发教程之日历项目实践(二)

一、创建 Android Project在新建对话框中输入 App 属性,SDK版本全部选最新的,不作版本兼容。主题选择 Holo Dark。下一步,使用默认设置下一步,使用默认设置下一步,使用默认配置下一步,使用默认设置创建完成后的初始画
2022-06-06

Android开发之ImageLoader使用详解

先给大家展示效果图,看看是大家想要的效果吗,如果还满意,请参考以下代码:前言 UniversalImageLoader是用于加载图片的一个开源项目,在其项目介绍中是这么写的, 支持多线程图片加载 提供丰富的细节配置,比如线程池大小,HTPP
2022-06-06

Android中使用开源框架eventbus3.0实现fragment之间的通信交互

1.概述 在之前的博文中简单介绍过如何实现fragment之间的信息交互:《Android中Fragment与Activity之间的交互(两种实现方式)》,今天继续给大家介绍一种可以实现此效果的另外一种方式EventBus。(相比于hand
2022-06-06

Android开发之Dialog怎么使用

在Android开发中,可以使用Dialog来创建弹出式对话框。下面是使用Dialog的一般步骤:1. 创建Dialog实例:```javaDialog dialog = new Dialog(context);```2. 设置对话框的内容
2023-08-18

编程热搜

  • Android:VolumeShaper
    VolumeShaper(支持版本改一下,minsdkversion:26,android8.0(api26)进一步学习对声音的编辑,可以让音频的声音有变化的播放 VolumeShaper.Configuration的三个参数 durati
    Android:VolumeShaper
  • Android崩溃异常捕获方法
    开发中最让人头疼的是应用突然爆炸,然后跳回到桌面。而且我们常常不知道这种状况会何时出现,在应用调试阶段还好,还可以通过调试工具的日志查看错误出现在哪里。但平时使用的时候给你闹崩溃,那你就欲哭无泪了。 那么今天主要讲一下如何去捕捉系统出现的U
    Android崩溃异常捕获方法
  • android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
    系统的设置–>电池–>使用情况中,统计的能耗的使用情况也是以power_profile.xml的value作为基础参数的1、我的手机中power_profile.xml的内容: HTC t328w代码如下:
    android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
  • Android SQLite数据库基本操作方法
    程序的最主要的功能在于对数据进行操作,通过对数据进行操作来实现某个功能。而数据库就是很重要的一个方面的,Android中内置了小巧轻便,功能却很强的一个数据库–SQLite数据库。那么就来看一下在Android程序中怎么去操作SQLite数
    Android SQLite数据库基本操作方法
  • ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
    工作的时候为了方便直接打开编辑文件,一些常用的软件或者文件我们会放在桌面,但是在ubuntu20.04下直接直接拖拽文件到桌面根本没有效果,在进入桌面后发现软件列表中的软件只能收藏到面板,无法复制到桌面使用,不知道为什么会这样,似乎并不是很
    ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
  • android获取当前手机号示例程序
    代码如下: public String getLocalNumber() { TelephonyManager tManager =
    android获取当前手机号示例程序
  • Android音视频开发(三)TextureView
    简介 TextureView与SurfaceView类似,可用于显示视频或OpenGL场景。 与SurfaceView的区别 SurfaceView不能使用变换和缩放等操作,不能叠加(Overlay)两个SurfaceView。 Textu
    Android音视频开发(三)TextureView
  • android获取屏幕高度和宽度的实现方法
    本文实例讲述了android获取屏幕高度和宽度的实现方法。分享给大家供大家参考。具体分析如下: 我们需要获取Android手机或Pad的屏幕的物理尺寸,以便于界面的设计或是其他功能的实现。下面就介绍讲一讲如何获取屏幕的物理尺寸 下面的代码即
    android获取屏幕高度和宽度的实现方法
  • Android自定义popupwindow实例代码
    先来看看效果图:一、布局
  • Android第一次实验
    一、实验原理 1.1实验目标 编程实现用户名与密码的存储与调用。 1.2实验要求 设计用户登录界面、登录成功界面、用户注册界面,用户注册时,将其用户名、密码保存到SharedPreference中,登录时输入用户名、密码,读取SharedP
    Android第一次实验

目录