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

上海袜网站建设/汽车营销活动策划方案

上海袜网站建设,汽车营销活动策划方案,宠物狗网站建设分析,php商城网站开发论文【转】http://blog.csdn.net/lanpy88/article/details/6659630 一Handler的定义: 主要接受子线程发送的数据, 并用此数据配合主线程更新UI. 解释: 当应用程序启动时,Android首先会开启一个主线程 (也就是UI线程) , 主线程为管理界面中的UI控件,…

【转】http://blog.csdn.net/lanpy88/article/details/6659630

一Handler的定义:

主要接受子线程发送的数据, 并用此数据配合主线程更新UI.
          解释: 当应用程序启动时,Android首先会开启一个主线程 (也就是UI线程) , 主线程为管理界面中的UI控件,进行事件分发, 比如说, 你要是点击一个 Button, Android会分发事件到Button上,来响应你的操作。  如果此时需要一个耗时的操作,例如: 联网读取数据,或者读取本地较大的一个文件的时候,你不能把这些操作放在主线程中,如果你放在主线程中的话,界面会出现假死现象, 如果5秒钟还没有完成的话,会收到Android系统的一个错误提示  "强制关闭".  这个时候我们需要把这些耗时的操作,放在一个子线程中,因为子线程涉及到UI更新,Android主线程是线程不安全的,也就是说,更新UI只能在主线程中更新,子线程中操作是危险的. 这个时候,Handler就出现了来解决这个复杂的问题,由于Handler运行在主线程中(UI线程中),它与子线程可以通过Message对象来传递数据,这个时候,Handler就承担着接受子线程传过来的(子线程用sedMessage()方法传弟)Message对象,(里面包含数据)  , 把这些消息放入主线程队列中,配合主线程进行更新UI。

 

二使用过程:

1定义Handler对象并初始化,重写handleMessage()函数

2定义Thread线程对象,通常写成一个类形式(如class ThreadTest implements Runnable),在run()方法中操作数据,并把数据handler.sendMessage()方法传输     到handler对象中,并开启线程。(注意:该步骤不一定用Thread实现,也可以利用TimeTask实现,具体的操作同样放在run()方法中)

3在handleMessage()函数中根据不同的数据形式实现不同的方法。

实例:

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;public class MainAcitivity extends Activity {/** Called when the activity is first created. */private Handler handler=new Handler(){public void handleMessage(Message msg){switch (msg.arg1) {case 1:txtTextView.setText("bbbb");break;case 2:setTitle("aaa");default:break;}}};private Button btn;private TextView txtTextView;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);txtTextView=(TextView)findViewById(R.id.txtView);btn=(Button)findViewById(R.id.btn);btn.setOnClickListener(new OnClickListener() {public void onClick(View arg0) {ThreadTest threadTest=new ThreadTest();new Thread(threadTest).start();ThreadTest2 threadTest2=new ThreadTest2();new Thread(threadTest2).start();}});}private class ThreadTest implements Runnable{public void run() {// TODO Auto-generated method stubtry{Thread.sleep(1000);}catch (Exception e) {e.printStackTrace();}Message msgMessage=new Message();msgMessage.arg1=1;handler.sendMessage(msgMessage);Log.e("ThreadName", Thread.currentThread().getName());}}private class ThreadTest2 implements Runnable{public void run() {// TODO Auto-generated method stubtry{Thread.sleep(1000);}catch (Exception e) {e.printStackTrace();}Message msgMessage=new Message();msgMessage.arg1=2;handler.sendMessage(msgMessage);Log.e("ThreadName", Thread.currentThread().getName());}}
}

简易版:定义了一个button,点击button异步实现,更换button的text

package com.example.handlertest;import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;public class MainActivity extends Activity {private Button start;//定义handler,根据接收到不同的消息来进行不同的ui更新操作private Handler handler = new Handler(){public void handleMessage(android.os.Message msg) {//这里放更新ui线程的代码switch (msg.arg1) {case 0:start.setText("Merry Christmas :)");break;default:break;}};};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);start = (Button)findViewById(R.id.start);start.setOnClickListener(new handleOnclickListener());}private class handleOnclickListener implements View.OnClickListener{@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stub//开启一个新的线程ThreadTest threadTest = new ThreadTest();threadTest.start();}};private class ThreadTest extends Thread {public void run() {try {Thread.sleep(3000);} catch (InterruptedException e) {// TODO Auto-generated catch block
                e.printStackTrace();}//进行耗时操作,发送handler消息Message msgToSend = new Message();msgToSend.arg1 = 0;handler.sendMessage(msgToSend);}};@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);return true;}}

 

转载于:https://www.cnblogs.com/lucky-star-star/p/4185322.html

http://www.lbrq.cn/news/1581391.html

相关文章:

  • 做建材去什么网站/googleplay官方下载
  • 龙华网站建设主要工作/西安百度推广开户多少钱
  • 专业做公司宣传网站的/交换友链
  • 做美食网站的需求分析/广州seo推广服务
  • 自己有主机怎么做论坛网站/河北百度seo关键词
  • 猪八戒logo设计网站/推广引流图片
  • 提升学历被骗怎么投诉/郑州seo排名优化
  • 深圳市住房和建设局领导班子成员/seo的工作内容
  • 工会网站群建设方案/线上销售平台
  • 天蝎网站推广优化/厦门百度关键词优化
  • web响应式设计 那些网站/如何做运营推广
  • aspnet网站开发案例/重庆seo快速优化
  • 建手机网站软件/seo新站如何快速排名
  • 东台市建设局网站/关键词排名优化公司
  • 做特价网站/做竞价推广这个工作怎么样
  • 校园网网络设计报告/seo教程seo优化
  • 公司网站实用性/淘宝指数查询官网手机版
  • php小型网站源码/seo软文代写
  • 台州网站制作策划/天津seo实战培训
  • 甘肃网站建设推广服务/市场调研
  • 男女做污的网站/广东疫情最新数据
  • 淄博政府网站建设公司/百度客户端
  • 网站做vr的收费/搜索引擎的网址有哪些
  • 中山专业网站制作/成都seo招聘信息
  • 做网站需要用到的语言/国内推广平台有哪些
  • 网络建站优化科技/百度笔记排名优化
  • 广东省路桥建设发展有限公司网站/广州seo网站公司
  • 慈溪网站开发/手机关键词seo排名优化
  • 临沂做四维和美家网站/网络营销师培训
  • 网站建设竞标书/产品推广文案范例
  • Linux系统编程Day12 -- 环境变量(初识)
  • 银河通用招人形机器人强化学习算法工程师了
  • 第2节 大模型分布式推理架构设计原则
  • Flink TableAPI 按分钟统计数据量
  • 集成电路学习:什么是Parameter Server参数服务器
  • 井字游戏的强化学习