public void run() { // TODO Auto-generated method stub //要做的事情,这里再次调用此Runnable对象,以实现每两秒实现一次的定时器操作 handler.postDelayed(this, 2000); 3,使用PostDelayed方法,两秒后调用此Runnable对象 handler.postDelayed(runnable, 2000); 实际上也就实现了一个2s的一个定时器 4,如果想要关闭此定时器,可以这样操作 handler.removeCallbacks(runnable); 当然,你也可以做一个闹钟提醒延时的函数试试,比如,先用MediaPlayer播放闹钟声音, 如果不想起,被停止播放之后,下次就5分钟后再播放,再被停止的话,下次就4分钟后播放, ……………… 只要更改延时的时间就可以实现了,用一个static对象的话会比较容易操作。 全手打原创哦,百度能告诉你的我就不告诉你了。 这是一种可以创建多线程消息的函数使用方法:1,首先创建一个Handler对象Handler handler=new Handler();2,然后创建一个Runnable对象Runnable runnable=new Runnable(){ @Override public void run() { // TODO Auto-generated method stub
Android 开发 ,定时器一般有以下3种实现 方法 : 一、采用Handler与线程的sleep(long) 方法 二、采用Handler的 post Delay ed (Runnable, long) 方法 三、采用Handler与timer及TimerTask结合的 方法 下面逐一介绍: 一、采用Handle与线程的sleep(long) 方法 Handler主要用来处理接受到的消息。这只是最主要的 方法 ,当然Handler里还有其他的 方法 供实现,有兴趣的可以去查API,这里不过多解释。 1. 定义一个Handler类,用于处理接受到的Message。 Handler handler = new Han
Android 开发 ,定时器一般有以下3种实现 方法 :1.采用Handle与线程的sleep(long) 方法 ; 2.采用Handler的 post Delay ed (Runnable, long) 方法 ; 3.采用Handler与timer及TimerTask结合的 方法 .
我们知道在 Android 开发 不能在非ui线程 更新ui,但是,有的时候我们需要在代码 执行一些诸如访问网络、查询数据库等耗时操作,为了不阻塞ui线程,我们时常会开启一个新的线程(工作线程)来执行这些耗时操作,然后我们可能需要将查询到的数据渲染到ui组件上,那么这个时候我们就需要考虑异步更新ui的问题了。 android 有下列几种异步更新ui的解决办法: Activity.runOnUiThread(Runnable) View. post (Runnable) long) View. post Delay ed (Runnable, long) 使用handler(线程间通讯) Memory safer implementation of android .os.Handler Problem Original implementation of Handler always keeps hard reference to handler in queue of execution. Any object in Message or Runnable post ed to android .os.Handler will be hard referenc ed for some time. If you create anonymous Runnable and call to post Delay ed with large timeout, that Runnable will be held in memory until timeout passes. Even if your Runnable seems small, it indirectly references owner class, which is us post Delay 的调用过程 public final boolean post Delay ed (@NonNull Runnable r, long delay Millis) { return sendMessag eD elay ed (get Post Messag
今天做项目看到这段代码时产生了一些疑惑,又打开 Handler 源码看了看相关的逻辑。简短的几行代码背后却有着复杂的逻辑。真是越看越爽啊!!! new Handler(). post Delay ed (new Runnable() { @Override public void run() { // do something },2000); handler...
大部分同学在回答Handler的原理的时候都能回答出Handler将消息丢到MessageQueue ,然后Looper.loop死循环不断从MessageQueue 拿消息去执行。 这块我之前也有写个文章介绍,如果忘了可以去看看。 但是如果再继续追问Handler. post Delay 又是怎么做到的就讲不出来了。这里就给大家讲一讲。 首先来看看handler里面是怎么处理 post ...
Android 的消息机制之前有一篇文章有写,里面具体讲到了Handler怎么发送和处理消息的整个过程。感兴趣的同学可以先跳转过去看看 从Handler. post (Runnable r)再一次梳理 Android 的消息机制(以及handler的内存泄露) 通常要实现延时操作有这几种 方法 : TimerTask Rxjava Thread Handler 这里我们主要来关注最后一种 方法 ,使用Handler的 post Delay ed 方法 来处理延时: new Handler(). post Delay ed mhandler. post Delay ed (runnable, 1000); Handler的 post Delay ed 方法 其实也是通过sendMessag eD elay ed 方法 实现的。 public final boolean post Delay ed (Runnable r, long delay Millis) return sendMessag eD elay ed (get Post Message(r), delay Millis);
相信 android 开发的朋友们,对于handler一定非常的熟悉,本文只讲handler. post Delay ed ()使用及具体的细节,不正确之处欢迎大家指正!! 下面给出具体的代码,并且附上运行后的结果package com.example.demo;import android .app.Activity; import android .os.Bundle; import android .os.H