android 线程超时设置,android 线程超时的例证

该博客展示了在Android环境中如何使用Timer和Handler来实现线程超时检查。当线程运行超过设定时间(5秒)时,系统会显示错误对话框并关闭计时器。线程在后台执行6秒的任务,如果在规定时间内未完成,将不会启动新的Activity,而是终止线程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

android 线程超时的例子

import java.util.Timer;

import java.util.TimerTask;

import android.app.Activity;

import android.app.AlertDialog;

import android.app.Dialog;

import android.content.Intent;

import android.os.Bundle;

import android.os.Handler;

import android.os.Looper;

import android.os.Message;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

/**

* @author Tony Shen

*

*/

public class Main extends Activity {

private Button button;

private Timer timer;

private final int TIMER_EXECUTE = 1;

private final int ERROR_MESSAGE = 1;

private final int CHECK_TIME = 5000;

private EThread eThread;

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

button = (Button) findViewById(R.id.btn);

button.setOnClickListener(new OnClickListener() {

public void onClick(View v) {

//timer for check the thread

timer = new Timer();

timer.schedule(new TimerTask(){

@Override

public void run() {

checkThread();

}

},CHECK_TIME);

eThread = new EThread();

eThread.start();

}

});

}

@Override

protected Dialog onCreateDialog(int id) {

return new AlertDialog.Builder(this).setTitle("错误")

.setMessage("线程超时!").create();

}

private Handler mHandler = new Handler() {

public void handleMessage(Message msg) {

switch(msg.what){

case TIMER_EXECUTE:

if (eThread.getState().toString().equals("TERMINATED")||

eThread.getState().toString().equals("TIMED_WAITING")) {

eThread.stopThread(true);

showDialog(ERROR_MESSAGE);

timer.cancel();// 关闭计时器

}

break;

}

super.handleMessage(msg);

}

};

protected void checkThread() {

Message msg = new Message();

msg.what = TIMER_EXECUTE;

mHandler.sendMessage(msg);

}

class EThread extends Thread {

private boolean flag = true;

public void stopThread(boolean flag) {

this.flag = !flag;

}

@Override

public void run() {

Looper.prepare();

try {

Thread.sleep(6000);

} catch (InterruptedException e) {

e.printStackTrace();

}

timer.cancel();// 关闭计时器

if(!flag) {

return;

}

Intent i = new Intent(Main.this,SecondActivity.class);

startActivity(i);

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值