展会信息港展会大全

你真的会用AsyncTask吗?
来源:互联网   发布日期:2016-01-14 12:43:28   浏览:1706次  

导读:超时处理 1椀洀瀀漀爀琀 java.util.Timer;002椀洀瀀漀爀琀 java.util.TimerTask;003 4椀洀瀀漀爀琀 android.app.A...

超时处理

001 import java.util.Timer;

002 import java.util.TimerTask;

003

004 import android.app.Activity;

005 import android.os.AsyncTask;

006 import android.os.Bundle;

007 import android.widget.Toast;

008

009 public class TimeoutTestActivity extends Activity {

010private final static int TIME_OUT = 3 * 1000;

011private final static int SLEEP_TIME = 2 * 1000;

012

013@Override

014public void onCreate(Bundle savedInstanceState) {

015super.onCreate(savedInstanceState);

016setContentView(R.layout.main);

017//new TimeOutTask().execute();

018new CancelSelfWhenTimeOutTask().execute();

019}

020 www.2cto.com

021private class CancelSelfWhenTimeOutTask extends AsyncTask<Void, Void, Void> {

022private boolean done = false;

023

024@Override

025protected Void doInBackground(Void... params) {

026cancelSelfWhenTimeOut();

027sleep();

028return null;

029}

030

031@Override

032protected void onPostExecute(Void result) {

033super.onPostExecute(result);

034Toast.makeText(TimeoutTestActivity.this, "任务完成", Toast.LENGTH_SHORT)

035.show();

036}

037

038private void cancelSelfWhenTimeOut() {

039new Timer().schedule(new TimerTask() {

040

041@Override

042public void run() {

043if (!done) {

044CancelSelfWhenTimeOutTask.this.cancel(true);

045}

046}

047}, TIME_OUT);

048}

049

050private void sleep() {

051try {

052Thread.sleep(SLEEP_TIME);

053done = true;

054} catch (InterruptedException e) {

055}

056}

057}

058

059private class TimeOutTask extends AsyncTask<Void, Void, Void> {

060private boolean done = false;

061private boolean isTimeOut = false;

062

063@Override

064protected Void doInBackground(Void... params) {

065try {

066throwTimeOutException();

067} catch (Exception e) {

068isTimeOut = true;

069}

070sleep();

071return null;

072}

073

074@Override

075protected void onPostExecute(Void result) {

076super.onPostExecute(result);

077if (isTimeOut) {

078Toast.makeText(TimeoutTestActivity.this, "任务超时",

079Toast.LENGTH_SHORT).show();

080} else {

081Toast.makeText(TimeoutTestActivity.this, "任务完成",

082Toast.LENGTH_SHORT).show();

083}

084}

085

086private void throwTimeOutException() {

087new Timer().schedule(new TimerTask() {

088

089@Override

090public void run() {

091if (!done) {

092isTimeOut = true;

093}

094}

095}, TIME_OUT);

096}

097

098private void sleep() {

099try {

100Thread.sleep(SLEEP_TIME);

101done = true;

102} catch (InterruptedException e) {

103}

104}

105}

106

107 }

作者: Dean83

赞助本站

人工智能实验室

相关热词: android开发 教程

AiLab云推荐
推荐内容
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港