2019独角兽企业重金招聘Python工程师标准>>>

//异步线程AsyncTask:开启线程下载,配合Json解析,还有适配器进度条、等控件使用(07)public class MainActivity extends Activity {private Spinner spinner;private ArrayAdapter<String> adapter;private ProgressBar pb;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);this.spinner = (Spinner) this.findViewById(R.id.spinner);String url = "http://litchiapi.jstv.com/api/GetFeeds?column=0&PageSize=20&pageIndex=1&val=100511D3BE5301280E0992C73A9DEC41";this.pb = (ProgressBar) this.findViewById(R.id.pb);new Mytask(this).execute(url);}class Mytask extends AsyncTask<String, Integer, byte[]> {private ProgressDialog dialog;public Mytask(Context context) {/** //这里不用对话提示了,采用进度条 dialog = new ProgressDialog(context);* dialog.setTitle("提示"); dialog.setMessage("正在下载数据!!");*/}@Overrideprotected void onPreExecute() {pb.setVisibility(View.VISIBLE);// 显示进度条/** dialog.show();//打开对话框 try { Thread.sleep(1000); } catch* (InterruptedException e) { e.printStackTrace(); }*/}@Overrideprotected void onProgressUpdate(Integer... values) {pb.setProgress(values[0]);}@Overrideprotected byte[] doInBackground(String... params) {// 下载JSON字符串String url = params[0];HttpClient client = new DefaultHttpClient();HttpGet get = new HttpGet(url);try {HttpResponse response = client.execute(get);if (response.getStatusLine().getStatusCode() == 200) {long totallenth = response.getEntity().getContentLength();BufferedInputStream br = new BufferedInputStream(response.getEntity().getContent());ByteArrayOutputStream bos = new ByteArrayOutputStream();int count = 0;// 进度条每次累加更新int len = -1;byte[] buf = new byte[100];while ((len = br.read(buf)) != -1) {bos.write(buf, 0, len);count += len;// 进度条计算int le = (int) ((count / (double) totallenth) * 100);publishProgress(le);// 进度条更新try {// Thread.currentThread().sleep(100);Thread.sleep(10);// 数据都太小太快,睡一下} catch (InterruptedException e) {e.printStackTrace();}}br.close();return bos.toByteArray();}} catch (ClientProtocolException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}return null;}@Overrideprotected void onPostExecute(byte[] result) {if (result != null) {List<String> list = parser(new String(result));adapter = new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_list_item_1, list);spinner.setAdapter(adapter);//绑定数据和适配器} else {Toast.makeText(MainActivity.this, "网络连接错误!!",Toast.LENGTH_SHORT).show();}pb.setVisibility(View.GONE);// 隐藏进度条// dialog.dismiss();//关闭对话框}private List<String> parser(String json) {List<String> list = new ArrayList<String>();try {JSONObject obj = new JSONObject(json);JSONObject object_paramz = obj.getJSONObject("paramz");JSONArray array_feeds = object_paramz.getJSONArray("feeds");for (int i = 0; i < array_feeds.length(); i++) {JSONObject object = array_feeds.getJSONObject(i);JSONObject object_data = object.getJSONObject("data");list.add(object_data.getString("subject"));}} catch (JSONException e) {e.printStackTrace();}return list;}}
}//布局<ProgressBarandroid:id="@+id/pb"style="@android:style/Widget.ProgressBar.Horizontal"android:layout_width="match_parent"android:layout_height="wrap_content"android:visibility="gone" /><Spinnerandroid:id="@+id/spinner"android:layout_width="match_parent"android:layout_height="wrap_content" />

转载于:https://my.oschina.net/u/2541146/blog/603762

异步线程AsyncTask_2示例(07)相关推荐

  1. java线程 同步与异步 线程池

    1)多线程并发时,多个线程同时请求同一个资源,必然导致此资源的数据不安全,A线程修改了B线 程的处理的数据,而B线程又修改了A线程处理的数理.显然这是由于全局资源造成的,有时为了解 决此问题,优先考虑 ...

  2. Spring Boot系列二 Spring @Async异步线程池用法总结

    转载 自 https://blog.csdn.net/hry2015/article/details/67640534 1. TaskExecutor Spring异步线程池的接口类,其实质是java ...

  3. java 异步线程池_Java - 异步线程池

    一.异步线程启动: new Thread newThread(newRunnable() { @Overridepublic voidrun() {//-- 这里是异步线程内的逻辑 } } ).sta ...

  4. Redis 笔记(12)— 单线程架构(非阻塞 IO、多路复用)和多个异步线程

    Redis 使用了单线程架构.非阻塞 I/O .多路复用模型来实现高性能的内存数据库服务.Redis 是单线程的.那么为什么说是单线程呢? Redis 在 Reactor 模型内开发了事件处理器,这个 ...

  5. java结束全部操作代码_Java创建与结束线程代码示例

    这篇文章主要介绍了Java创建与结束线程代码示例,小编觉得挺不错的,这里分享给大家,供需要的朋友参考. 本文讲述了在Java中如何创建和结束线程的最基本方法,只针对于Java初学者.一些高级知识如线程 ...

  6. 【Java 并发编程】线程池机制 ( 线程池示例 | newCachedThreadPool | newFixedThreadPool | newSingleThreadExecutor )

    文章目录 前言 一.线程池示例 二.newCachedThreadPool 线程池示例 三.newFixedThreadPool 线程池示例 三.newSingleThreadExecutor 线程池 ...

  7. java创建线程代码_Java创建与结束线程代码示例

    本文讲述了在Java中如何创建和结束线程的最基本方法,只针对于Java初学者.一些高级知识如线程同步.调度.线程池等内容将会在后续章节中逐步深入. 创建线程 创建普通线程有两种方式,继承Thread类 ...

  8. android 异步线程的使用

    //从项目中取出的,android 异步线程的使用,去执行上传百度云图片, public class MyThreadsAddMember extends AsyncTask<Integer, ...

  9. springboot使用异步线程池执行自定义任务实例

    文章目录 1.介绍 配置类 业务层 控制层 1.介绍 在Spring中存在一个AsyncConfigurer接口,它是一个可以配置异步线程池的接口,因此只需要Java配置文件,实现AsyncConfi ...

最新文章

  1. linux内核tor03,Linux内核x86架构引导协议4(翻译)
  2. 【转载】Yield,迭代器,生成器
  3. 使用@required注解完成依赖检查
  4. 查看sqlserver版本
  5. C++中各种智能指针的实现及弊端(一)
  6. c语言 java 性能 测试_这个蓝桥杯系统的题,用c语言去评测是满分,改为Java说运行错误是0分,但是我查看输入输出,至少第...
  7. P3321 [SDOI2015]序列统计(未解决)
  8. 剪切文件_lammps模拟带缺陷镍板剪切变形(in文件及注释)
  9. 同宿舍的程序员毕业五年之女生篇:有人怀疑人生,有人考虑出家
  10. MySQL-回表查询与索引覆盖
  11. Unity Shader:细分着色器(Tessellation Shader)在Unity顶点着色器中的写法以及各参数变量解释
  12. linux重新设定分区大小
  13. 业界唯一集成AI加速的服务器处理器,全新第二代至强巩固英特尔数据中心领导者地位
  14. 论通过测试与失败测试
  15. 《学习之道》第十章学习方法28再次提到番茄时间
  16. Sql Server 随机抽样方法
  17. 如何检测页面是否允许访问Cookie
  18. 订单管理_01新增订单信息流程
  19. Android-模块化-面向接口编程深度解析,值得收藏
  20. matplotlib(直方图,条形图,饼图,散点图)基础知识

热门文章

  1. html制作花样链接卡页面_网站404页面怎么做
  2. 计算机网络实用技术教学资源,计算机网络实用技术第一章课件教学.ppt
  3. poi 设置word表格颜色_办公软件小课堂 Word表格的设置
  4. 位运算判断奇偶数_基础拾遗:除了amp;和amp;amp;的区别,你还要知道位运算的这5个运算符...
  5. java策略_java策略模式
  6. PHP案例:数组用法演示
  7. 2017.9.23 Count on a tree 思考记录
  8. vc6配置c语言编译环境,驱动WDK7600在VC6.0下的编译开发配置环境
  9. 【英语学习】【English L06】U04 Adventure L1 I want to watch a ballet show there
  10. 【英语学习】【WOTD】trivial 释义/词源/示例