简单使用handler.postDelayed()方法

相信android开发的朋友们,对于handler一定非常的熟悉,本文只讲handler.postDelayed()使用及具体的细节,不正确之处欢迎大家指正!!
下面给出具体的代码,并且附上运行后的结果

package com.example.demo;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.View;

public class MainActivity extends Activity {
    private Handler handler;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        init();
    }
    private void init() {
        handler = new Handler();
    }
    private Runnable mTimeTask = new Runnable() {

        @Override
        public void run() {
            Log.d("MainActivity", "---------mTimeTask---------"+System.currentTimeMillis());
            handler.postDelayed(this, 10*1000);
        }
    };
    public void click(View view){
        Log.d("MainActivity", "---------one---------"+System.currentTimeMillis());
        handler.postDelayed(mTimeTask, 100);
        handler.postDelayed(new Runnable() {

            @Override
            public void run() {
                Log.d("MainActivity", "---------handler.postOne---------"+System.currentTimeMillis());
            }
        }, 5*1000);
        handler.postDelayed(new Runnable() {

            @Override
            public void run() {
                Log.d("MainActivity", "---------handler.postTwo---------"+System.currentTimeMillis());
            }
        }, 3*1000);
        handler.postDelayed(new Runnable() {

            @Override
            public void run() {
                Log.d("MainActivity", "---------handler.postThree---------"+System.currentTimeMillis());
            }
        }, 2 * 1000);
        Log.d("MainActivity", "---------two---------"+System.currentTimeMillis());
    }
}

下面是执行的结果

09-09 20:45:18.498: D/MainActivity(1373): ---------one---------1441802718504
09-09 20:45:18.502: D/MainActivity(1373): ---------two---------1441802718504
09-09 20:45:18.602: D/MainActivity(1373): ---------mTimeTask---------1441802718604
09-09 20:45:20.506: D/MainActivity(1373): ---------handler.postThree---------1441802720510
09-09 20:45:21.506: D/MainActivity(1373): ---------handler.postTwo---------1441802721507
09-09 20:45:23.510: D/MainActivity(1373): ---------handler.postOne---------1441802723512
09-09 20:45:28.610: D/MainActivity(1373): ---------mTimeTask---------1441802728610
09-09 20:45:38.618: D/MainActivity(1373): ---------mTimeTask---------1441802738619
09-09 20:45:48.626: D/MainActivity(1373): ---------mTimeTask---------1441802748630

根据上面的日志分析,便非常清晰的说明了,在OnCreate方法中执行handler.postDelayed()方法和具体的顺序是没有关系的,具体的执行顺序是根据方法中设置的时间,就是所谓的延时时间,只要延时时间到了就会执行该方法。
如果想验证上面的日志信息,请运行上述代码!!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值