• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > 有主线程发送message给子线程,主线程发送message

有主线程发送message给子线程,主线程发送message

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了sendmessage 发送按键,message,message是什么意思,e message,sendmessage等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

有主线程发送message给子线程,主线程发送message


 

  通常我们在处理耗时任务时候都会通过新建线程来处理,当任务处理完后通过Handler将结果发送回主线程。比如下面示例:

 1 package com.example.testlistener;
 2 
 3 import java.util.Timer;
 4 import java.util.TimerTask;
 5 
 6 import android.app.Activity;
 7 import android.content.res.Configuration;
 8 import android.os.Bundle;
 9 import android.os.Handler;
10 import android.os.Message;
11 import android.view.View;
12 import android.view.View.OnClickListener;
13 import android.view.View.OnLongClickListener;
14 import android.widget.Button;
15 import android.widget.EditText;
16 import android.widget.Toast;
17 
18 public class MainActivity extends Activity {
19     EditText txt;
20     final Handler hander = new Handler(){
21         public void handleMessage(android.os.Message msg) {
22             if(msg.what == 0x1234){
23                 Toast.makeText(MainActivity.this, msg.arg1 + "", 1000).show();
24             }
25         };
26     };
27     @Override
28     protected void onCreate(Bundle savedInstanceState) {
29         super.onCreate(savedInstanceState);
30         setContentView(R.layout.activity_main);
31         
32         new Timer().schedule(new TimerTask() {
33             int i = 0;
34             @Override
35             public void run() {
36                 i++;
37                 Message msg = new Message();
38                 msg.what = 0x1234;
39                 msg.arg1 = i;
40                 hander.sendMessage(msg);
41             }
42         }, 0, 2000);
43     }
44     
45 }

 

  那么,我们能不能通过Handler从主线程发送消息给子线程呢?答案是肯定的,需要用到Looper.prepare()和Looper.loop()。如下面的代码:

 1 public class MainActivity extends Activity {
 2     EditText txt;
 3     Button bt;
 4     TestThread testThread;
 5     int j = 0;
 6     
 7     @Override
 8     protected void onCreate(Bundle savedInstanceState) {
 9         super.onCreate(savedInstanceState);
10         setContentView(R.layout.activity_main);
11         txt = (EditText) findViewById(R.id.txt);
12         bt = (Button) findViewById(R.id.bn);
13         testThread = new TestThread();
14         testThread.start();
15         bt.setOnClickListener(new OnClickListener() {
16             
17             @Override
18             public void onClick(View arg0) {
19                 j++;
20                 Message msg = new Message();
21                 msg.what = 0x1000;
22                 msg.arg1 = j;
23                 testThread.thander.sendMessage(msg);
24             }
25         });
26         
27         
28     }
29     
30     //自定义子线程
31     class TestThread extends Thread{
32         public Handler thander;
33         @Override
34         public void run() {
35             //创建一个Looper对象
36             Looper.prepare();
37             thander = new Handler(){
38                 @Override
39                 public void handleMessage(Message msg) {
40                     if(msg.what == 0x1000){
41                         System.out.println("j = " + msg.arg1);
42                         //txt.setText(msg.arg1 + "");
43                     }
44                 }
45             };
46             //启动Looper
47             Looper.loop();
48         }
49     }
50     
51 }

 

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 有主线程发送message给子线程,主线程发送message

相关文章

  • 2017-05-26XamarinAndroid 自动绑定View变量,xamarinandroidview
  • 2017-05-26eclipse — 导入android项目后识别成java项目的问题及解决,eclipseandroid
  • 2017-05-26Android Drawable的9种子类 介绍
  • 2017-05-26自定义Dialog,android自定义dialog
  • 2017-05-26一个特别适合新手练习的Android小项目——每日一妹纸
  • 2017-05-222.5.6 ViewFlipper(翻转视图)的基本使用
  • 2017-05-26Android中实现APP文本内容的分享发送与接收方法简述,androidapp
  • 2017-05-26Android 中的R文件 丢失或无法更新,android
  • 2017-05-26手动获取判断处理权限,获取判断权限
  • 2017-05-26AS400银行核心系统开发中的技术总结--交易和组件写法

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 手机安全卫士——进程管理,安全卫士进程管理
    • android studio 中去除应用标题栏,androidstudio
    • Android 工具包 xUtils 3.3.16,xutils3.3.16
    • Android中常见的图片加载框架,
    • 在Android中用Kotlin的Anko运行后台任务(KAD 09),kotlinanko
    • 策略模式,java策略模式
    • Linux主机网络流量监控ifstat
    • 如何通过cmdline获取panel型号的dtsi文件节点(qcom,lcd,id)
    • Android登录客户端,验证码的获取,网页数据抓取与解析,HttpWatch基本使用
    • 自定义Dialog,android自定义dialog

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有