当前位置: 首页 > news >正文

廊坊制作网站公司/如何制作自己的网站?

廊坊制作网站公司,如何制作自己的网站?,网站建设平台推广,公众号做图网站今天写了一个更新UI的小例子,没想到出了log打印了这样一个错误:Only the original thread that created a view hierarchy can touch its views。goolgle了一下找到了原因。 原来android中相关的view和控件不是线程安全的,我们必须单独做处理…

今天写了一个更新UI的小例子,没想到出了log打印了这样一个错误:Only the original thread that created a view hierarchy can touch its views。goolgle了一下找到了原因。

原来android中相关的view和控件不是线程安全的,我们必须单独做处理。这里借此引出Handler的使用。

 

  Handler的官方描述:


A Handler allows you to send and process Message and Runnable objects associated with a thread’s MessageQueue. Each Handler instance is associated with a single thread and that thread’s message queue. When you create a new Handler, it is bound to the thread / message queue of the thread that is creating it – from that point on, it will deliver messages and runnables to that message queue and execute them as they come out of the message queue


.Handler的使用场合:

 

1、 to schedule messages and runnables to be executed as some point in the future;

      安排messages和runnables在将来的某个时间点执行。

2、 to enqueue an action to be performed on a different thread than your own.

      将action入队以备在一个不同的线程中执行。即可以实现线程间通信。比如当你创建子线程时,你可以再你的子线程中拿到父线程中创建的Handler对象,就可以通过该对象向父线程的消息队列发送消息了。由于Android要求在UI线程中更新界面,因此,可以通过该方法在其它线程中更新界面。


通过Handler更新UI实例:

步骤:

1、创建Handler对象(此处创建于主线程中便于更新UI)。

2、构建Runnable对象,在Runnable中更新界面。

3、在子线程的run方法中向UI线程post,runnable对象来更新UI。

 

详细代码如下:

[java] view plain copy
print?
  1. package djx.android;  
  2.   
  3. import djx.downLoad.DownFiles;  
  4. import android.app.Activity;  
  5. import android.os.Bundle;  
  6. import android.os.Handler;  
  7. import android.view.View;  
  8. import android.view.View.OnClickListener;  
  9. import android.widget.Button;  
  10. import android.widget.TextView;  
  11.   
  12. public class downLoadPractice extends Activity {  
  13.     private Button button_submit=null;  
  14.     private TextView textView=null;  
  15.     private String content=null;  
  16.     private Handler handler=null;  
  17.     /** Called when the activity is first created. */  
  18.     @Override  
  19.     public void onCreate(Bundle savedInstanceState) {  
  20.         super.onCreate(savedInstanceState);  
  21.         setContentView(R.layout.main);  
  22.         //创建属于主线程的handler  
  23.         handler=new Handler();  
  24.           
  25.         button_submit=(Button)findViewById(R.id.button_submit);  
  26.         textView=(TextView)findViewById(R.id.textView);  
  27.         button_submit.setOnClickListener(new submitOnClieckListener());  
  28.     }  
  29.     //为按钮添加监听器  
  30.     class submitOnClieckListener implements OnClickListener{  
  31.         @Override  
  32.         public void onClick(View v) {  
  33. //本地机器部署为服务器,从本地下载a.txt文件内容在textView上显示           
  34.             final DownFiles df=new DownFiles(“http://192.168.75.1:8080/downLoadServer/a.txt”);  
  35.             textView.setText(”正在加载……”);  
  36.             new Thread(){  
  37.                 public void run(){    
  38.                     content=df.downLoadFiles();       
  39.                     handler.post(runnableUi);   
  40.                     }                     
  41.             }.start();                        
  42.         }  
  43.           
  44.     }   
  45.   
  46.    // 构建Runnable对象,在runnable中更新界面  
  47.     Runnable   runnableUi=new  Runnable(){  
  48.         @Override  
  49.         public void run() {  
  50.             //更新界面  
  51.             textView.setText(”the Content is:”+content);  
  52.         }  
  53.           
  54.     };  
  55.           
  56.       
  57. }  
package djx.android; import djx.downLoad.DownFiles; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; public class downLoadPractice extends Activity { private Button button_submit=null; private TextView textView=null; private String content=null; private Handler handler=null; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //创建属于主线程的handler handler=new Handler(); button_submit=(Button)findViewById(R.id.button_submit); textView=(TextView)findViewById(R.id.textView); button_submit.setOnClickListener(new submitOnClieckListener()); } //为按钮添加监听器 class submitOnClieckListener implements OnClickListener{ @Override public void onClick(View v) { //本地机器部署为服务器,从本地下载a.txt文件内容在textView上显示 final DownFiles df=new DownFiles(“http://192.168.75.1:8080/downLoadServer/a.txt”); textView.setText(“正在加载……”); new Thread(){ public void run(){ content=df.downLoadFiles(); handler.post(runnableUi); } }.start(); } } // 构建Runnable对象,在runnable中更新界面 Runnable runnableUi=new Runnable(){ @Override public void run() { //更新界面 textView.setText(“the Content is:”+content); } }; }

 

 

 

*java线程的详细讲解链接

 

 

转自:http://blog.csdn.net/djx123456/article/details/6325983

http://www.jmfq.cn/news/5126149.html

相关文章:

  • 网络营销是网上销售吗/seo关键词排名优化矩阵系统
  • 北京网站建设设计公司/百度收录批量提交入口
  • 网站备案 多少钱/站长工具seo优化
  • 网站建建设公司和网络自建/seo优化关键词排名优化
  • 网站需要怎么做的吗/最近国际新闻大事20条
  • 重庆网站建站系统/网络公司优化关键词
  • 网站建设和app开发/免费下载百度seo
  • 介绍旅游美食的网站模板/网站提交入口
  • 湖北网站建设优化/网络营销岗位职责和任职要求
  • 电商实训网站建设报告/seo在哪学
  • 新增专业建设规划/百度词条优化
  • 网站浏览成交指标/电商网店
  • 北京网站设计推荐刻/网站如何赚钱
  • 资讯类网站建设/广州网站设计建设
  • 乐营销网站/seo技术培训泰州
  • 网站布局策划/培训机构网站
  • 0基础做网站/最新国际新闻事件
  • 马云做网站最早/爱站网长尾关键词挖掘工具电脑版
  • 有什么网站建设比较好的公司/百度竞价排名机制
  • 怎么为自己公司做网站/店铺在百度免费定位
  • 欢迎访问中国建设银行网站个人客户/昆明网站开发推广公司
  • 秦皇岛网络优化排名/长尾词seo排名优化
  • 手机主页网站哪个好用/服装品牌营销策划方案
  • 个人响应式网站/网络营销包括哪些
  • 购买网站在线客服系统/东莞做网站推广的公司
  • 上海网站维护/直接下载app
  • wordpress 客户端源码分析/衡阳网站优化公司
  • wordpress 读者墙/百度seo优化软件
  • 忆唐网不做网站做品牌/厦门seo培训学校
  • wordpress多站显示不正常/搜索引擎优化是指什么意思