延时 *** 作,可以用下列伏缓方案:
方案1:线程阻告坦断
try {
Thread.currentThread().sleep(2000)//阻断2秒
} catch (InterruptedException e) {
e.printStackTrace()
}
方案缺友模2:使用Handler的postDelayed延迟 *** 作。
mHandler .postDelayed(mRunnable, 3000)// 在Handler中执行子线程并延迟3s。
private Runnable mRunnable = new Runnable() {
@Override
public void run() {
mHandler.sendEmptyMessage(1)
}
}
Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg)
//3s后执行代码
}
}。
在Android开发中我们可能会有延时执行某个 *** 作的需求,例如我们启动应用的时候,一开始呈现的是一个引导页面,过了两三秒后,会自动跳转到主界面。这就是一个延时 *** 作。
下面是实现延时执行 *** 作的几种方法:
new Thread() {
@Override
public void run() {
super.run()
Thread.sleep(3000)//休眠3秒
/**
* 要执行的 *** 作
*/
}
}.start()
TimerTask task = new TimerTask() {
@Override
public void run() {
竖颂粗 /**
*要执行的 *** 作
*/
}
}
Timer timer = new Timer()
timer.schedule(task, 3000)//3秒后执行TimeTask的run方法
Handler handler = new Handler()
handler.postDelayed(new Runnable() {
@Override
public void run() {
/**
*要执行的 *** 作
*/
}
樱者 }, 3000)//3秒后执行余镇Runnable中的run方法
要起到延时的作用需要使用Handler。
举例说明:
public class Strobe extends Activity {private LinearLayout mLinearLayout
private Handler mHander = new Handler()
private boolean mActive = false
private boolean mSwap = true
private final Runnable mRunnable = new Runnable() {
public void run() {
if (mActive) {
if (mSwap) {
mLinearLayout.setBackgroundColor(Color.WHITE)
mSwap = false
mHander.postDelayed(mRunnable, 20)
} else {
弯此 mLinearLayout.setBackgroundColor(Color.BLACK)
mSwap = true
mHander.postDelayed(mRunnable, 100)
}
}
}
}
@Override
埋喊迅public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState)
setContentView(R.layout.main)
mLinearLayout = (LinearLayout) findViewById(R.id.strobe)
startStrobe()
渗枝 }
private void startStrobe() {
mActive = true
mHander.post(mRunnable)
}
}
代码的意思是:程序创建一个闪光点效果,延时显示:一个是100 ms,其它是20ms。
关于Handler
Handler主要用于异步消息的处理:当发出一个消息之后,首先进入一个消息队列,发送消息的函数即刻返回,而另外一个部分在消息队列中逐一将消息取出,然后对消息进行处理,也就是发送消息和接收消息不是同步的处理。 这种机制通常用来处理相对耗时比较长的 *** 作。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)