博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
你真的会用AsyncTask吗?(二)
阅读量:6088 次
发布时间:2019-06-20

本文共 2207 字,大约阅读时间需要 7 分钟。

hot3.png

超时处理
import java.util.Timer;import java.util.TimerTask;import android.app.Activity;import android.os.AsyncTask;import android.os.Bundle;import android.widget.Toast;public class TimeoutTestActivity extends Activity {	private final static int TIME_OUT = 3 * 1000;	private final static int SLEEP_TIME = 2 * 1000;	@Override	public void onCreate(Bundle savedInstanceState) {		super.onCreate(savedInstanceState);		setContentView(R.layout.main);		//new TimeOutTask().execute();		new CancelSelfWhenTimeOutTask().execute();	}	private class CancelSelfWhenTimeOutTask extends AsyncTask
{ private boolean done = false; @Override protected Void doInBackground(Void... params) { cancelSelfWhenTimeOut(); sleep(); return null; } @Override protected void onPostExecute(Void result) { super.onPostExecute(result); Toast.makeText(TimeoutTestActivity.this, "任务完成", Toast.LENGTH_SHORT) .show(); } private void cancelSelfWhenTimeOut() { new Timer().schedule(new TimerTask() { @Override public void run() { if (!done) { CancelSelfWhenTimeOutTask.this.cancel(true); } } }, TIME_OUT); } private void sleep() { try { Thread.sleep(SLEEP_TIME); done = true; } catch (InterruptedException e) { } } } private class TimeOutTask extends AsyncTask
{ private boolean done = false; private boolean isTimeOut = false; @Override protected Void doInBackground(Void... params) { try { throwTimeOutException(); } catch (Exception e) { isTimeOut = true; } sleep(); return null; } @Override protected void onPostExecute(Void result) { super.onPostExecute(result); if (isTimeOut) { Toast.makeText(TimeoutTestActivity.this, "任务超时", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(TimeoutTestActivity.this, "任务完成", Toast.LENGTH_SHORT).show(); } } private void throwTimeOutException() { new Timer().schedule(new TimerTask() { @Override public void run() { if (!done) { isTimeOut = true; } } }, TIME_OUT); } private void sleep() { try { Thread.sleep(SLEEP_TIME); done = true; } catch (InterruptedException e) { } } }}

转载于:https://my.oschina.net/dingbuoyi/blog/62385

你可能感兴趣的文章
网站自动登录功能的设计[转]
查看>>
transform:rotate()将元素进行不同角度的旋转
查看>>
详解Vue前端生产环境发布配置实战篇
查看>>
ASP.NET万能JSON解析器
查看>>
Android ListView初始化将实例化多少个item
查看>>
c语言编译执行过程
查看>>
我发誓,这真不是我写的
查看>>
UI组件-UIButton
查看>>
java获取在各种编码下中文及英文的字符个数
查看>>
Kilo 版 Keystone 数据库结构
查看>>
RetrunMoreRow
查看>>
Redis学习笔记(3)-Hash
查看>>
Alpha冲刺——Day1
查看>>
C++静态成员函数,静态成员变量,运算符重载
查看>>
CentOS6下安装git
查看>>
Centos6.5下docker 环境搭建
查看>>
Generic performance test
查看>>
解决eclipse异常退出后再次启动时自动退出的问题
查看>>
python基础===使用switch方法,减少使用if语句
查看>>
学习新知识的思路
查看>>