• [Android]Can't create handler inside thread that has not called Looper.prepare()


    更新是由于在新的线程来打开UI只有一个错误。子线程更新主线程UI需要使用Handler.
    还有比如今天出现以下错误。码,如以下:

    send.setOnClickListener(new OnClickListener() {  
    					@Override  
    		            public void onClick(View v) {  
    		                new Thread(new Runnable() {  
    		                    @Override  
    		                    public void run() {  
    		                    	Toast.makeText(getApplicationContext(), "主线程中UI", Toast.LENGTH_SHORT).show();  
    		                    }  
    		                });  
    		            }  
    		        });  
    Toast.makeText(getApplicationContext(), "主线程UI", Toast.LENGTH_SHORT).show();  
    都是这句话惹的祸。

    把上面这行代码也通过处理放进handler之后。错误就没有了。


    Handler是这么定义的:
    主要接受子线程发送的数据, 并用此数据配合主线程更新UI.
    Handler的主要作用:主要用于异步消息的处理
    Handler的执行过程:
    当(子线程)发消息后,。首先,进入一个(主线程)消息队列,函数来发送消息立即返回,在主线程Handler一个在新闻删除消息队列中的一个,然后处理该消息。这样就实现了跨线程UI更新(其实在主线程中仍然完成)。


    这种机构通常被用来处理通过相对耗时较长的操作,如访问网络是耗时的操作,读大的文本文件,比较费时的操作处理。

  • 相关阅读:
    java相关
    cmd批处理命令及powershell
    火狐浏览器调试模式
    windows 配置java环境变量
    Acwing-279-自然数拆分(背包)
    Acwing-278-数字组合(背包)
    Acwing-277-饼干(DP)
    Acwing-274-移动服务(DP)
    Acwing-275-传纸条(DP)
    Acwing-121-赶牛入圈(二分, 二维前缀和,离散化)
  • 原文地址:https://www.cnblogs.com/blfshiye/p/4601845.html
Copyright © 2020-2023  润新知