第五章,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 ...
随机推荐
- 联想E490 加M.2固态硬盘 卡在第一画面不动解决办法
电脑配置: E490 500G机械硬盘,自己加M.2 NVMe 固态硬盘. 问题:启动时出现 2101:Detection error on SSD1(M.2), 无法识别到机械硬盘 (重新插拨 ...
- org.apache.ibatis.binding.BindingException: Parameter ‘brOrderNo’ not found. Available parameters ar
最近使用 mybatis 写项目的时候遇到报错:org.apache.ibatis.binding.BindingException: Parameter 'brOrderNo' not found. ...
- vb常用的内部函数(二):字符串函数
len(string):计算字符串长度函数.返回字符串string中字符的个数.一个汉字为一个字符,空格也为一个字符,空字符串的长度为0. Ltrim(string).Rtrim(string).Tr ...
- NodeJS学习笔记 (7)网络服务-http-client(ok)
原文:https://github.com/chyingp/nodejs-learning-guide 自己敲代码: ClientRequest概览 当你调用 http.request(options ...
- NOIp2018模拟赛四十
今天太晚了...题解到时候补吧(flag立好) 成绩:100+0+0=100 感觉A题本质暴力贪心?C题一道水题我居然没做...亏爆 A:[agc011e]increasing numbers B:[ ...
- 【BZOJ4176】Lucas的数论-杜教筛
求$$\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{n}f(ij)$$,其中$f(x)$表示$x$的约数个数,$0\leq n\leq 10^9$,答案膜$10^9+ ...
- tinymce原装插件源码分析(五)-searchreplace
searchreplace 功能:查找和替换 代码注释见: https://www.xunhanliu.top/static/js/tinymce/plugins/searchreplace/plug ...
- Microsoft Visual Studio 2015打开TFS大量报错问题解决方案
用vs2015打开项目出现如图错误,尝试对XX项执行 添加 操作时遇到 XX 个错误,因为公司项目比较大,这个错误一直在弹,搜索了下,没有找到出现类似问题的解决方案. 因为这个路径是TFS(Team ...
- POJ1743Musical Theme(后缀数组+二分)
题意 有N(1 <= N <=20000)个音符的序列来表示一首乐曲,每个音符都是1..88范围内的整数,现在要找一个重复的主题.“主题”是整个音符序列的一个子串,它需要满足如下条件: 1 ...
- HTTP——状态码
(转载) 完整的 HTTP 1.1规范说明书来自于RFC 2616,你可以在http://www.talentdigger.cn/home/link.php?url=d3d3LnJmYy1lZGl0b ...