当前位置: 首页> 财经> 产业 > 邢台市信息产业集团有限公司_长春市最新新冠疫情_怎么样建立自己的网站_重庆百度竞价推广

邢台市信息产业集团有限公司_长春市最新新冠疫情_怎么样建立自己的网站_重庆百度竞价推广

时间:2025/8/23 4:57:18来源:https://blog.csdn.net/weixin_38090079/article/details/143799589 浏览次数:1次
邢台市信息产业集团有限公司_长春市最新新冠疫情_怎么样建立自己的网站_重庆百度竞价推广

Android开发中经常需要调用线程访问网络,而手机的网络信号经常断断续续,容易出现网络超时的情况,这种情况下后台线程往往得不到关闭,浪费系统资源。

在下面的例子中使用了java 中的Timer类,对线程进行了约束,如果线程在一定时间内为响应则终止该线程。

import java.util.Timer;
import java.util.TimerTask;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.app.Activity;
import android.app.ProgressDialog;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;public class MainActivity extends Activity {private static final int TIME_OUT = 0;private static final int SUCCESS = 1;// 超时的时限为5秒private static final int TIME_LIMIT = 5000;private ProgressDialog proDialog;private Timer timer;private Thread threadTimeOut;private Button btn1, btn2;@Override  
protected void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  setContentView(R.layout.activity_main);  btn1 = (Button) findViewById(R.id.button1);  btn2 = (Button) findViewById(R.id.button2);  // 测试未超时的线程,为btn1绑定事件  btn1.setOnClickListener(new OnClickListener() {  @Override  public void onClick(View v) {  proDialog = ProgressDialog.show(MainActivity.this, "提示",  "线程运行中");  // 匿名内部线程  threadTimeOut = new Thread() {  @Override  public void run() {  while (true) {  try {  //线程休眠时间,超时  sleep(10000);  } catch (InterruptedException   e) {  break;  }  }  }  };  thread.start();  // 设定定时器  timer = new Timer();  timer.schedule(new TimerTask() {  @Override  public void run() {  sendTimeOutMsg();  }  }, TIME_LIMIT);  }  });  // 测试超时的线程,为btn2绑定事件  btn2.setOnClickListener(new OnClickListener() {  @Override  public void onClick(View v) {  proDialog = ProgressDialog.show(MainActivity.this, "提示",  "线程运行中");  // 匿名内部线程  thread = new Thread() {  public void run() {  try {  // 线程休眠时间,未超时  Thread.sleep(3000);  } catch (InterruptedException e) {  e.printStackTrace();  }  Message msgSuc = new Message();  msgSuc.what = SUCCESS;  myHandler.sendMessage(msgSuc);  }  };  thread.start();  // 设定定时器  timer = new Timer();  timer.schedule(new TimerTask() {  @Override  public void run() {  sendTimeOutMsg();  }  }, TIME_LIMIT);  }  });  
} 
private MyHandler myHandler = null;//Handler静态内部类private static class MyHandler extends Handler {//弱引用WeakReference<SceneryLightControlSingleFragment> weakReference;public MyHandler(SceneryLightControlSingleFragment activity) {weakReference = new WeakReference<SceneryLightControlSingleFragment>(activity);}@Overridepublic void handleMessage(Message msg) {SceneryLightControlSingleFragment activity = weakReference.get();if (activity != null) {switch (msg.what) {case TIME_OUT:  //打断线程  thread.interrupt();  proDialog.dismiss();  Toast.makeText(MainActivity.this, "线程超时", Toast.LENGTH_SHORT)  .show();  break;  case SUCCESS:  //取消定时器  timer.cancel();  proDialog.dismiss();  Toast.makeText(MainActivity.this, "线程运行完成", Toast.LENGTH_SHORT)  .show();  break;  default:  break;  }}}}//向handler发送超时信息  
private void sendTimeOutMsg() {  Message timeOutMsg = new Message();  timeOutMsg.what = TIME_OUT;  myHandler.sendMessage(timeOutMsg);  
}  @Overridepublic void onDestroy() {if(myHandler!= null) {myHandler.removeCallbacksAndMessages(null);}if(threadTimeOut != null){if(threadTimeOut.isAlive()){threadTimeOut.interrupt();}}super.onDestroy();}
} 
关键字:邢台市信息产业集团有限公司_长春市最新新冠疫情_怎么样建立自己的网站_重庆百度竞价推广

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: