android 开发中如何实现让程序执行一条语句后延时一段时间后再执行下面的语句?

android 开发中如何实现让程序执行一条语句后延时一段时间后再执行下面的语句?,第1张

延时 *** 作,可以用下列伏缓方案:

方案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主要用于异步消息的处理:当发出一个消息之后,首先进入一个消息队列,发送消息的函数即刻返回,而另外一个部分在消息队列中逐一将消息取出,然后对消息进行处理,也就是发送消息和接收消息不是同步的处理。 这种机制通常用来处理相对耗时比较长的 *** 作。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12338361.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存