android > 新线程操作UI

有一个需求, 我需要 有一个可能会长时间回应的请求, 然后在 请求的过程中 去改变UI,  实际发现 android 中只能主线程能操作 UI, 所以 只能 新建一个线程 去操作 长时间 请求 的 任务, 然后 将 返回结果 返回 给 Message

下面是一个 点击事件 的 处理 过程 

 

 

	class AddSensor implements OnClickListener{
		Looper looper = Looper.myLooper();  
		Handler messageHandler  = new MessageHandler(looper); 		
		public void onClick(View v) {		
			setTitle("信息已提交,请等待...");			
			/新建线程 发 UDP 请求
			new Thread(){
				@Override
				public void run() {
					// TODO Auto-generated method stub			
					
					String return_data = "结果长时间的请求得到的回应 ";						
					
					Message message = Message.obtain(); 
					message.obj = return_data;
			        messageHandler.sendMessage(message);					
				}
			}.start();	
			\\\\\\\\\\
						
		}; 
		
		/ 收到 新线程 发请求 后的 结果 
		class MessageHandler extends Handler {  			  
	        public MessageHandler(Looper looper) {  	  
	            super(looper);  	  
	        }  	  
	        @Override  	  
	        public void handleMessage(Message msg) {  
	  
	            //收到 新线程 发请求 后的 结果  ,做判断然后 改变UI
	        	String return_str = (String) msg.obj;
	        	
	        	if(return_str == null){
	        		setTitle("添加新系统");
	        		error_info.setText(R.string.submit_error);
	        	}else{
	        		setTitle("添加新系统");
	        		Toast.makeText(LoginAddSensor.this, return_str, Toast.LENGTH_LONG).show();
	        	}
	        }  
	  
	    }
		/\\\\\\\\

 

		new Thread() {
			@Override
			public void run() {
				// TODO Auto-generated method stub
				if (!Thread.currentThread().isInterrupted()) {// 如果没有终止
					try {
						// do something
						Message message = Message.obtain(); 
		      			message.what = HANDER_SAVE;
		      	    	message.obj = requestStatus;
		      	    	hander.sendMessage(message);

					} catch (Exception e) {
						e.printStackTrace();
					} finally {
						Thread.currentThread().interrupt();// 执行完终止
					}
				}
			}
		}.start();






	//\\
	Handler hander = new Handler() {
		public void handleMessage(Message msg) {
			int handerType = (int) msg.what;
			final String return_str = (String) msg.obj;
			switch (handerType) {
					case HANDER_SAVE:
			      		//
						break;
					case HANDER_REFRESH:
    	        		//
						break;
					default:
						break;
			}
	
		};
	};

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值