2 u013372185 u013372185 于 2014.09.22 15:19 提问

back键监听,子线程关不掉!急!!!!

今天做判断加载文件超时时用到了一个子线程,我的方法就是开始加载文件时,开启这个子线程,让它不停的循环,判断加载时间是否超过30秒,超过就发送一个超时的信息,现在问题就是, 加载的时候会弹出一个进度框,这时候子线程已经开始不停的循环判断了,我想点back键,停止线程,但线程一直循环,onKeyDown();一直无法抢到时间片,执行不了 线程停止语句; `

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {

    if(keyCode ==KeyEvent.KEYCODE_BACK){
        overTimeUtil.stop();
    }


    return super.onKeyDown(keyCode, event);
}

   /**
 * 停止 超时检测线程
 */
public void stop() {
    isStopThread = true;

}


class  TimeThread extends Thread {


    @Override
    public void run() {

        while (!isStopThread) {
            try {
                Thread.sleep(100);
                currentTime = System.currentTimeMillis();
                String strMsg = String.format("times = %d",
                        currentTime - startTime);
                Log.v("TAG", strMsg);

                if (isLoadFinish) { //报障类型加载完成,跳出循环
                    break;
                } else {
                    if ((currentTime - startTime) >= timeRange) {
                        Message msg = new Message();
                        msg.what = OverTimeUtil.OVERTIME;
                        handler.sendMessage(msg);
                        break;
                    }
                }
            } catch (InterruptedException e) {

                e.printStackTrace();
            }
        }
    }
}

1个回答

u013372185
u013372185   2014.09.23 11:26
已采纳

自己解决了,alertdialog有个属性setCancelable()设置关闭窗口,如果为true,就是点击返回键和窗口以外的地方 提示框都会关闭,false 就点击没有效果;

如果只想点击返回键关闭提示框,就alertdialog.setOnKeyListener();设置下按键监听

               private ProgressDialog pd;
                pd.setCancelable(false);//系统默认false,true:按返回键或者按pd以外的地方 都会退出pd
                pd.setOnKeyListener(XXXXActivity.this);//设置返回键监听

@Override
public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
    if(keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN){
        if(pd !=null){
            pd.dismiss();

        }
    }

    return false;
}
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!