Android开发练习问题(1)

        今天在完成Android练习“后台程序运行进度提示---ProgressBar与Handler的整合应用”的过程中,发现了一个奇怪的现象。在我的程序第一次运行的过程中,可以正常地显示运行的状态,但是再次运行时,却不能正常显示状态,具体情况如下:

 

图1 程序正常运行(能够正常显示运行状态)

 

图2 程序不正常运行(再次运行时不能正确显示运行状态)

        经过分析,发现应该是程序在第一次运行后创建的线程一直在后台运行,没有结束掉,再次运行程序时,线程仍处于中断中,导致if判断不能往下继续执行,if判断的相关代码如下:

	Handler myMessageHandler = new Handler(){
		public void handleMessage(Message msg){
			switch(msg.what){
		        case MainActivity.GUI_STOP_NOTIFIER:
		    	    mTextView01.setText(R.string.str_progress_done);
		    	    mProgressBar01.setVisibility(View.GONE);
		    	    Thread.currentThread().interrupt();
		    	    break;
		        case MainActivity.GUI_THREADING_NOTIFIER:
		    	    if(!Thread.currentThread().isInterrupted()){
		    		    mProgressBar01.setProgress(intCounter);
		    		    mTextView01.setText(
		    		        getResources().getText(R.string.str_progress_start)+"("+Integer.toString(intCounter)+"%)\n"+
		    		        "Progress:"+Integer.toString(mProgressBar01.getProgress())+"\n"+
		    		        "Indeterminate:"+Boolean.toString(mProgressBar01.isIndeterminate()));		    		
		    	    }
		    	    break;
		        }
		    super.handleMessage(msg);
		}	
	};


         如果我将代码中关于Tread中断和Thread中断判断的部分内容注释掉,程序运行的状态就能够正常显示。Android后来的版本中将线程的stop()和suspend()等一些方法deprecated。线程中断后,如何让线程恢复中断呢?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值