当前位置: 首页 > news >正文

电子商城网站系统重庆热点新闻爆料

电子商城网站系统,重庆热点新闻爆料,工业和信息化部电话,用主机宝建立的网站上传之后404转载#xff1a;http://blog.csdn.net/xiaanming/article/details/9011193 实现定时器有很多种方式#xff0c;在这里我简单的介绍几种方式 实现定时器有很多种方式#xff0c;在这里我简单的介绍几种方式 (1)使用Handler Runnable的方式 Handler handler new Handler(…转载http://blog.csdn.net/xiaanming/article/details/9011193 实现定时器有很多种方式在这里我简单的介绍几种方式 实现定时器有很多种方式在这里我简单的介绍几种方式 (1)使用Handler Runnable的方式 Handler handler new Handler(); Runnable runnable new Runnable() { Override public void run() { //你要做的事 //...... System.out.println(Thread.currentThread().getName()); handler.postDelayed(runnable, 1000); } };然后调用handler.post(runnable);就能启动定时器,这里是每隔1s打印线程名字从打印中我们可以知道,他并没有另开线程而是运行在UI线程当中当你要取消定时器的时候只需要调用handler.removeCallbacks(runnable)就可以了。 上面中有一个问题有时候你会发现removeCallbacks有时候会失效不能从消息队列中移除看下面的demo 图两个按钮一个将Runnable加到消息队列中一个将Runnable从消息队列中移除。该Runnable每1秒钟打印一次日志。 import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class TimerActivity extends Activity{ Handler handler new Handler(); Runnable runnable new Runnable() { Override public void run() { System.out.println(update...); handler.postDelayed(runnable, 1000); } }; Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.timer); Button mButtonStart (Button) findViewById(R.id.button1); Button mButtonStop (Button) findViewById(R.id.button2); mButtonStart.setOnClickListener(new OnClickListener() { Override public void onClick(View v) { handler.post(runnable); } }); mButtonStop.setOnClickListener(new OnClickListener() { Override public void onClick(View v) { handler.removeCallbacks(runnable); } }); } } 结果1start –  输出 – stop– 停止输出 2start – 输出 –  Background – Front – stop-继续输出当Activity进入后台运行后再转入前台运行removeCallbacks无法将updateThread从message queue中移除。 这是为什么呢 在Activity由前台转后台过程中线程是一直在运行的但是当Activity转入前台时会重新定义Runnable runnable也就是说此时从message queue移除的runnable与原先加入message queue中的runnable并非是同一个对象。如果把runnable定义为静态的则removeCallbacks不会失效,对于静态变量在内存中只有一个拷贝节省内存JVM只为静态分配一次内存在加载类的过程中完成静态变量的内存分配,我们做如下修改就能解决上面的这个问题 static Handler handler new Handler(); static Runnable runnable new Runnable() { Override public void run() { System.out.println(update...); handler.postDelayed(runnable, 1000); } }; (2)使用Timer的方式 Timer timer new Timer(); timer.schedule(new TimerTask() { Override public void run() { System.out.println(update....); } }, 0, 1000);上面的每一秒打印语句run方法是运行在子线程不能直接在里面更新UI操作这里需要注意下取消的话调用timer.cancel()就能移除任务了(3)采用Handle与线程的sleep(long )方法 1.定义一个Handler类用于处理接受到的Message Handler handler new Handler() { public void handleMessage(Message msg) { super.handleMessage(msg); System.out.println(update...); } 2.新建一个实现Runnable接口的线程类用一个boolean 来控制线程开始和结束  boolean isLive true如下 public class MyThread implements Runnable { Override public void run() { while (isLive) { try { Thread.sleep(1000);// 线程暂停1秒单位毫秒 Message message new Message(); message.what 1; handler.sendMessage(message);// 发送消息 } catch (InterruptedException e) { e.printStackTrace(); } } } } 3.在需要启动线程的地方加入下面语句new Thread(new MyThread()).start();4.取消的话将isLive设置为false就行了
http://www.yutouwan.com/news/232011/

相关文章:

  • 怎么可以做网站的网站建设环境工程技术中心网站
  • 手机页面网站开发例子photoshop电脑版怎么安装
  • 网站建设信息平台易名域名解析到手机网站
  • 桂林建设信息网站“哈尔滨企业服务平台”公众号
  • 网站中文域名续费是什么情况南京中建乡旅建设投资有限公司网站
  • 网站建设设计哪个济南兴田德润简介贵阳网站建设公司招聘
  • 天津专业网站策划公司wordpress页面文章区别
  • 网站建设的方法和技术企业网站html模板免费下载
  • 想搭建网站学什么基础集团网站建设
  • 如何做文档附网站昆明招工网站找普工作建设工作
  • 百度手机网站提交wordpress输入电子邮箱
  • 做背景音乐的版权网站网络运营公司排名
  • 企业管理系统哪个好东莞网站制作实力乐云seo
  • 汕头公司做网站纵横seo助手
  • 郑州做网站七彩科技企业网站的设计
  • 网站安全狗 fastcgi网站建设官方网
  • 深圳营销型网站定制公司邮箱怎么查
  • 网站内部代码优化德国和俄罗斯和做视频网站
  • 在家百度统计网站打不开福田专门做网站推广公司
  • 高埗镇做网站重庆烤鱼制作
  • 保健品网站建设方案书模板网站平台建设需求的意见
  • 自学网站建设看什么书找马云做网站
  • iis建好的网站套用模板电子商务网站建设案例
  • 深圳网站建设托管wordpress链接过期
  • 绍兴网站制作价格免费的短视频app大全下载软件
  • 做公司网站多钱软件如何开发
  • 郑州做花店网站宣传彩页设计制作
  • 兰州新区城乡建设管理局网站腾讯理财是什么样的做网站
  • 网站空间ftp下载慢百度app官网下载安装
  • 建个企业网站备案需要多长时间安装nginx wordpress