热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

VolleyProgressDialog在获取大量数据时卡住/冻结

如何解决《VolleyProgressDialog在获取大量数据时卡住/冻结》经验,为你挑选了1个好方法。

这是我的代码:

private void downloadSupplyTownData(final int townId2) {

    /*******************
     * Using Volley
     *******************/
    // Post params to be sent to the server
    HashMap params = new HashMap();
    params.put("ID",townId2);
   CustomDialogClass.showProgressDialog(context,true); 


    JsonObjectRequest req = new JsonObjectRequest(Consts.baseUrl+Consts.townSupplyUrl, new JSONObject(params),
           new Response.Listener() {
               @Override
               public void onResponse(JSONObject response) {
                   try {
                       totalCOnsumerRecords=   Integer.parseInt(response.getString("TotalConsumerRecords").trim());
                       if(totalConsumerRecords>0)
                       {                               
                           /**For -----**/
                           JSONArray dtrArray   =   response.getJSONArray("xxx");
                           for(int i=0;i

这里显示和隐藏ProgressDialog CustomDialogClass.showProgressDialog(context,true);

进度对话框先旋转2-3秒然后卡住.请帮我解决这个问题.

编辑

/***显示Dialog**/@Override protected Dialog onCreateDialog(int id){switch(id){case progress_bar_type://我们将其设置为0 pDialog = new ProgressDialog(this); pDialog.setMessage("正在下载文件.请稍候..."); pDialog.setIndeterminate(假); pDialog.setMax(100); pDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); pDialog.setCancelable(真); pDialog.show(); 返回pDialog; 默认值:返回null; }}

/**
 * Background Async Task to download file
 * */
class DownloadFileFromURL extends AsyncTask {

    /**
     * Before starting background thread
     * Show Progress Bar Dialog
     * */
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        showDialog(progress_bar_type);
    }

    /**
     * Downloading file in background thread
     * */
    @Override
    protected String doInBackground(String... f_url) {
        downloadSupplyTownData(townId);

        return null;
    }

    /**
     * Updating progress bar
     * */
    protected void onProgressUpdate(String... progress) {
        // setting progress percentage
        pDialog.setProgress(Integer.parseInt(progress[0]));
   }

    /**
     * After completing background task
     * Dismiss the progress dialog
     * **/
    @Override
    protected void onPostExecute(String file_url) {            
        dismissDialog(progress_bar_type);

    }

}

从视图中调用AsynchTask new DownloadFileFromURL().execute();



1> ρяσѕρєя K..:

进度对话框先旋转2-3秒然后卡住.

因为解析json响应和downloadConsumerData方法从主UI线程发出api请求.

Volley onResponse网络请求完成时在主UI线程上称为回调方法的方法中.

用于在onResponse方法使用AsyncTask类中解析请求响应并在方法中调用ProgressDialogdismiss方法,该onPostExecute方法将ProgressDialog在Volley请求时关闭,downloadConsumerData在后台线程中完成json数据和方法作业的解析

onResponse方法启动AsyncTask :

  @Override
      public void onResponse(JSONObject response) {
       new DownloadFileFromURL().execute(response);
  }

doInBackground进程JSON数据中:

  @Override
    protected String doInBackground(String... f_url) {
         totalCOnsumerRecords= Integer.parseInt(response.getString
                           ("TotalConsumerRecords").trim());
        // add all code here from onResponse
        downloadSupplyTownData(townId);

        return null;
    }


推荐阅读
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
  • 本文讨论了如何在codeigniter中识别来自angularjs的请求,并提供了两种方法的代码示例。作者尝试了$this->input->is_ajax_request()和自定义函数is_ajax(),但都没有成功。最后,作者展示了一个ajax请求的示例代码。 ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • ZSI.generate.Wsdl2PythonError: unsupported local simpleType restriction ... [详细]
  • 本文详细介绍了Spring的JdbcTemplate的使用方法,包括执行存储过程、存储函数的call()方法,执行任何SQL语句的execute()方法,单个更新和批量更新的update()和batchUpdate()方法,以及单查和列表查询的query()和queryForXXX()方法。提供了经过测试的API供使用。 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
  • 深入理解Kafka服务端请求队列中请求的处理
    本文深入分析了Kafka服务端请求队列中请求的处理过程,详细介绍了请求的封装和放入请求队列的过程,以及处理请求的线程池的创建和容量设置。通过场景分析、图示说明和源码分析,帮助读者更好地理解Kafka服务端的工作原理。 ... [详细]
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
  • uniapp开发H5解决跨域问题的两种代理方法
    本文介绍了uniapp开发H5解决跨域问题的两种代理方法,分别是在manifest.json文件和vue.config.js文件中设置代理。通过设置代理根域名和配置路径别名,可以实现H5页面的跨域访问。同时还介绍了如何开启内网穿透,让外网的人可以访问到本地调试的H5页面。 ... [详细]
author-avatar
崔显莉京_716
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有