第五章,AsyncTask和ProgressBar的练习(Android)
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:orientation="vertical"
> <Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/main_start"
android:text="開始"
/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/main_stop"
android:text="停止"
/> <ProgressBar
android:id="@+id/main_progress"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@android:style/Widget.ProgressBar.Horizontal"
/> </LinearLayout>
package com.example.demo07; import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.Toast; public class MainActivity extends Activity implements OnClickListener { Button button_start, button_stop;
ProgressBar pd;
MyTask as; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 初始化数据
init(); } private void init() {
button_start = (Button) this.findViewById(R.id.main_start);
button_stop = (Button) this.findViewById(R.id.main_stop);
pd = (ProgressBar) this.findViewById(R.id.main_progress);
button_start.setOnClickListener(this);
button_stop.setOnClickListener(this); } // 点击方法
@Override
public void onClick(View arg0) { // 点击了開始
if (button_start.getId() == arg0.getId()) {
as = new MyTask();
// execute()中的參数能够不填。也能够传一个或多个。
// 參数类型与doInBackground方法參数必须一致,由于接受參数就是这种方法
as.execute(); // 点击了关闭
} else if (button_stop.getId() == arg0.getId()) {
as.cancel(true);
} } // 写一个类继承AsyncTask
class MyTask extends AsyncTask<String, Integer, String> { @Override
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
Log.i("qing", "onPreExecute");
} @Override
protected String doInBackground(String... arg0) { /*****************************************
* 这里假设有循环,一定要写在try里面,同一时候一定要写休眠sleep,
* 不然AsyncTask的cancel()方法运行时此AsyncTask无法停止,
* 由于这整个AsyncTask停止时由于它在休眠时Thread.sleep(),
* 点击了运行cancel()会报异常,于是退出。 不然就会一直循环,
* 尽管会运行cancel()方法。但这个AsyncTask不会停止。
*****************************************/
try { for (int i = 0; i <= 100; i++) {
Thread.sleep(100);
publishProgress(i);
} } catch (InterruptedException e) {
e.printStackTrace();
} return null;
} @Override
protected void onProgressUpdate(Integer... values) {
// TODO Auto-generated method stub
pd.setProgress(values[0]);
Log.i("q", "onProgressUpdate"); } @Override
protected void onPostExecute(String result) {
// TODO Auto-generated method stub
Toast.makeText(getApplication(), "进度结束", Toast.LENGTH_SHORT).show();
Log.i("q", "onPostExecute"); } @Override
protected void onCancelled() {
// TODO Auto-generated method stub
super.onCancelled(); Log.i("q", "onCancelled");
} } }
调试截图:


第五章,AsyncTask和ProgressBar的练习(Android)的更多相关文章
- Android开发艺术探索第五章——理解RemoteViews
Android开发艺术探索第五章--理解RemoteViews 这门课的重心在于RemoteViews,RemoteViews可以理解为一种远程的View,其实他和远程的Service是一样的,Rem ...
- 《Django By Example》第五章 中文 翻译 (个人学习,渣翻)
书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者@ucag注:大家好,我是新来的翻译, ...
- 《Entity Framework 6 Recipes》中文翻译系列 (22) -----第五章 加载实体和导航属性之延迟加载
翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 第五章 加载实体和导航属性 实体框架提供了非常棒的建模环境,它允许开发人员可视化地使 ...
- 精通Web Analytics 2.0 (7) 第五章:荣耀之钥:度量成功
精通Web Analytics 2.0 : 用户中心科学与在线统计艺术 第五章:荣耀之钥:度量成功 我们的分析师常常得不到我们应得的喜欢,尊重和资金,因为我们没有充分地衡量一个黄金概念:成果.因为我们 ...
- 《Linux内核设计与实现》读书笔记 第五章 系统调用
第五章系统调用 系统调用是用户进程与内核进行交互的接口.为了保护系统稳定可靠,避免应用程序恣意忘形. 5.1与内核通信 系统调用在用户空间进程和硬件设备间添加了一个中间层, 作用:为用户空间提供了一种 ...
- Java语言程序设计(基础篇) 第五章 循环
第五章 循环 5.2 while循环 1.while循环的语法如下: while(循环继续条件){ //循环体 语句(组); } 2.程序:提示用户为两个个位数相加的问题给出答案 package co ...
- 读《编写可维护的JavaScript》第五章总结
第五章 UI层的松耦合 5.1 什么是松耦合 在Web开发中,用户界面是由三个彼此隔离又相互作用的层定义的: HTML是用来定义页面的数据和语义 CSS用来给页面添加样式 JavaScript用来给页 ...
- 《Linux内核设计与实现》课本第五章学习笔记——20135203齐岳
<Linux内核设计与实现>课本第五章学习笔记 By20135203齐岳 与内核通信 用户空间进程和硬件设备之间通过系统调用来交互,其主要作用有三个. 为用户空间提供了硬件的抽象接口. 保 ...
- Android深度探索--HAL与驱动开发----第五章读书笔记
第五章主要学习了搭建S3C6410开发板的测试环境.首先要了解到S3C6410是一款低功耗.高性价比的RISC处理器它是基于ARMI1内核,广泛应用于移动电话和通用处理等领域. 开发板从技术上说与我们 ...
- 《java编程思想》读书笔记(一)开篇&第五章(1)
2017 ---新篇章 今天终于找到阅读<java编程思想>这本书方法了,表示打开了一个新世界. 第一章:对象导论 内容不多但也有20页,主要是对整本书的一个概括.因为已经有过完整JAV ...
随机推荐
- 联想lenovo 家用电脑安装win7 无法引导问题(新电脑安装系统时提示File:\Boot\BCD错误解决方案)
安装方式 : 1.进入 PE 2.用 EasyimageX 恢复 GHO镜像 3.重启后出现 原因: 主要 是安装win7 时,格式 化选择为GUID模式. 处理: win7 以后,格式华时选择MB ...
- vue 锚点定位
vue 锚点定位 <template> <div class="details"> <div class="wrapper w"& ...
- ArrayList的使用方法
1.什么是ArrayList ArrayList就是传说中的动态数组,用MSDN中的说法,就是Array的复杂版本,它提供了如下一些好处: 动态的增加和减少元素 实现了ICollection和I ...
- SpringBoot 获取客户端 ip
/** * 获取客户端ip地址 * @param request * @return */ public static String getCliectIp(HttpServletRequest re ...
- 关于python 中的偏函数转载
Python的functools模块提供了很多有用的功能,其中一个就是偏函数(Partial function).要注意,这里的偏函数和数学意义上的偏函数不一样. 在介绍函数参数的时候,我们讲到,通过 ...
- 上海交大课程MA430-偏微分方程续论(索伯列夫空间)之总结(Sobolev Space)
我们所用的是C.L.Evans "Partial Differential Equations" $\def\dashint{\mathop{\mathchoice{\,\rlap ...
- Linux文件属性(属主属组权限)
Linux文件属性 Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限.为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定. ...
- 【BZOJ 1303】 [CQOI2009]中位数图
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 注意是1..n的排列. 设b的位置为i. 设i右边的数字,比b大的为1,比b小的为-1. (i左边的位置数字也一样设置成1和-1 则 ...
- less03 混合
less //基本混合 .font_hn{ color: red; font-family: microsoft yahei, "黑体", Arial, Simsun, " ...
- 威胁报告:mDNS 反射式 DDoS 攻击
威胁报告:mDNS 反射式 DDoS 攻击 转自:https://www.akamai.com/cn/zh/about/our-thinking/threat-advisories/akamai-md ...