zoukankan      html  css  js  c++  java
  • #子线程消息被阻挡

    子线程消息被阻挡

    主要内容:本文讲述一种由于变成原因造成的子线程消息一直无法响应的情况以及其解决方法

    功能描述:点击按钮后客户端从服务器获取名称图片列表,接着对图片进行下载。

    MainActivity中

     private Handler handler;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
    	super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    	/******************************
    	其他操作程序
    	******************************/
    
    	//消息处理
    	handler = new Handler()
        {
            @Override
            public void handleMessage(Message msg) 
    		{
    			if(msg.what == 0x101)
                {
                    imgList = (String[]) msg.obj;
                }
    		}
    
    }
    
    //按钮点击事件
    public void click1(View v)
    {
    	//开启子线程获取服务器图像列表
    	ImgListThread downloadImg = new ImgListThread(handler);        //(1)
    
    	//等待缩略图下载完成再切换到GridView显示界面
       	while(imgList== null){}                                        //(2)
    	
    	/********************
    	图像下载程序
    	*********************/
    }
    

    ImgListThread中

    public class ImgListThread implements Runnable
    {
    	private Handler handler;
    
    	public ImgListThread(Handler mHandler)
    	{
        	handler = mHandler;
    	}
    
    	public void run()
    	{
    		/*********************************
    		获取服务器图片列表,放入imgList[]中
    		*********************************/
    		Message msg = handler.obtainMessage();
            msg.obj = imgList;
            msg.what = 0x101;
            handler.sendMessage(msg);
    	}
    }
    

    问题:点击按钮后,由语句(1)进入子线程ImgListThread中,但子线程中的Mseeage消息一直无法传递给主线程。主线程也就一直无法获取图片列表,一直处于语句(2)位置,死循环。

    错因:由语句(1)进入子线程后,主线程一直停留在语句(2)循环当中,则主线程一直处于被占用状态,无暇对子线程返回的Message消息进行处理。

    解决方法:去掉while语句,同时将获取图片列表后的下载与操作放在handler消息响应中。这样主线程就可以对ImgListThread消息进行响应,同时可以实现获取图像列表后自动下载图片。

  • 相关阅读:
    获取全部校园新闻
    爬取校园新闻首页的新闻的详情,使用正则表达式,函数抽离
    网络爬虫基础练习
    编写可维护的JavaScript
    markDown使用
    好文推荐系列---------JS模板引擎
    backbone框架思路
    如何获取URL中的参数
    如何使用NodeJs来监听文件变化
    sass基本用法(转载)
  • 原文地址:https://www.cnblogs.com/silentteen/p/6142642.html
Copyright © 2011-2022 走看看