android开发中,遇到定时器跟线程同时用的问题

  最近开发新的项目,需要实现一个功能:

                1.先弹出一个友好的提示框:正在处理数据。

                2。等处理完数据后,关闭提示框。弹出一个60秒倒计时的复合框。复合框上的倒计时从硬件里读出。而关闭复合框的条件是:需要对硬件进行操作或者当定时器为0时,才能让复合框消失。

                3。当对复核后操作后,再弹出一个友好的提示框,提示:成功或者失败。

就这么一个小功能,由于刚开始接触android,不是很熟悉它其中的各种机制。对于我来说,头疼了好几天。然后在一个同事的指点下,突然发现了一条光明的道路。实验了一下,竟然成功了。

    在其过程中,碰到以下几种问题:

                                              1.start called from thread。

                                              2.java.lang.RuntimeException: Only one Looper may be created per thread。

                                              3.Activity has leaked window that was originally added。

                                              4.Can't create handler inside thread that has not called Looper.prepare()。

 

        上述问题,主要是对android中线程跟定时器混搭使用,更新页面而导致的错处。没有清楚理解和意识到android中线程跟消息的重要性。

        解决思路如下:

             1.一个提示框的函数。

             2.启动一个线程,处理数据,等数据处理后,发送一个消息。消息包含对复核框、定时器的创建和任务对复合框倒计时器的操作。

 

解决依据:

         Looper用于封装了android线程中的消息循环,默认情况下一个线程是不存在消息循环(message loop)的,需要调用Looper.prepare()来给线程创建一个消息循环,调用Looper.loop()来使消息循环起作用,从消息队列里取消息,处理消息。
    Handler不带参数的默认构造函数:new Handler(),实际上是通过Looper.myLooper()来获取当前线程中的消息循环。

    这样线程跟消息搭配就可以实现上述功能。

 

转载于:https://www.cnblogs.com/whbCNW/archive/2013/05/13/android.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值