nowhere___boy 2014-09-22 07:19 采纳率: 100%
浏览 1659
已采纳

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条回答

  • nowhere___boy 2014-09-23 03: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;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能