关闭

在handler里new了一个Thread子线程休眠2S结果主线程变卡了

4人阅读 评论(0) 收藏 举报
private int is_Finish = 0;
    private int FINISH = 0;
    public void onBackPressed() {
        Log.i("isfinish", "" + is_Finish);
        if(is_Finish == 0){
            Toast.makeText(this, "再按一次返回键退出", Toast.LENGTH_SHORT).show();
            is_Finish = 1;
            Message msg = new Message();
            msg.what = FINISH;
            is_Finish++;
            handler.sendMessage(msg);
        }else{
            finish();
        }
    }

    Handler handler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            switch (msg.what){
                case 0:
                    try {
                        Thread.sleep(2000);
                        is_Finish = 0;
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    break;
                default:
                    break;
            }
        }
    };

这是代码,目的是达到在2S内连续按两次返回键退出程序的目的,但是按一次返回键后就会卡在handler中线程的休眠上,按理说不应该啊,这是怎么回事?
0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

为什么在子线程中直接new Handler会报错?

为什么在子线程中直接new Handler会报错:我们从报错开始追踪:“Can’t create handler inside thread that has not called Looper.pr...
  • u013168615
  • u013168615
  • 2015-08-22 14:58
  • 2271

子线程中可以使用Handler吗?

本文包括与Handler有关的以下问题:  (1)Handler的作用  (2)为什么Android中要设计为只能在UI线程中去更新UI呢?  (3)Handler的两个异常  (4)Handler、...
  • ErLiangCode
  • ErLiangCode
  • 2016-08-04 11:41
  • 6560

handler必须在主线程中实例化吗?以及关于handler我所了解的

Handler一定要在主线程实例化吗?new Handler()和new Handler(Looper.getMainLooper())的区别 如果你不带参数的实例化:Handler handler ...
  • zhoushumin157016
  • zhoushumin157016
  • 2016-07-21 19:48
  • 2824

Handler详解(二)---关联到非UI线程

讲解HandlerThread
  • u011026329
  • u011026329
  • 2015-08-20 09:23
  • 972

源码角度讲解子线程创建Handler报错的原因

1. 前言众所周知,在android中,非ui线程中是不能更新ui,如果在子线程中做ui相关操作,可能会出现程序崩溃。一般的做法是,创建一个Message对象,然后Handler发送该message,...
  • dfskhgalshgkajghljgh
  • dfskhgalshgkajghljgh
  • 2016-09-20 23:23
  • 1800

工作线程中利用handler向主线程发送消息

首先,可以先了解下线程间通信时Message,Handler,MessageQueue,Looper之间的关系解释下. Handler获取当前线程中的looper对象,looper用来从存放Mess...
  • mazhichen1991
  • mazhichen1991
  • 2016-05-21 11:53
  • 731

使用线程池和直接new 一个Thread运行对比

大家new Thread的方式会创建一个线程,在我们有大量的创建线程的时候这样的方法还会可靠吗?每一次new Thread都会重新创建一个线程,而线程的创建和销毁都需要耗时的。在jdk1.5的conc...
  • u014104286
  • u014104286
  • 2017-05-13 09:00
  • 500

Android Handler:主线程如何通知子线程

在 android 中,不可以在子线程中更新 UI 的操作,否则会报错或者异常信息。 在这种情况下,我们会使用 Handler(在 UI 线程创建该对象) 接收子线程的消息更新 UI. 可以看出,...
  • twlkyao
  • twlkyao
  • 2013-08-28 09:50
  • 1608

Android销毁线程的方式

Android开发中,经常会用到线程和Timer,如果没有主动关闭它们,当程序结束时,线程并没有被销毁,而是一直在后台运行着,当我们重新启动应用时,又会重新启动一个线程,周而复始,你启动应用次数越多,...
  • yangxi_001
  • yangxi_001
  • 2014-02-24 16:59
  • 2546

Android开发:Handler Runnable和Thread之间的区别和联系 应用--------------------看完本篇,从此一览无余!

在java中可有两种方式实现多线程,一种是继承Thread类,一种是实现Runnable接口;Thread类是在java.lang包中定义的。一个类只要继承了Thread类同时覆写了本类中的run()...
  • yanzi1225627
  • yanzi1225627
  • 2013-02-16 00:47
  • 29559
    个人资料
    • 访问:69次
    • 积分:200
    • 等级:
    • 排名:千里之外
    • 原创:6篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章存档