`
158067568
  • 浏览: 329283 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android消息机制入门一

阅读更多

Android消息机制入门一

为什么要引入消息机制?

为什么要引入消息机制,首先举一个简单的例子,我们来说明:

package cn.edu.heut.zcl;
 
import java.util.Timer; 
import java.util.TimerTask; 
import android.app.Activity; 
import android.os.Bundle; 
 
public class Activity1 extends Activity { 
   
    private int t = 0; 
     
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.main); 
        Timer timer = new Timer(); 
        timer.scheduleAtFixedRate(new MyTask(), 1, 5000); 
    } 
    private class MyTask extends TimerTask{ 
        @Override 
        public void run() { 
              Activity1.this.updateTitle();
        }    
    } 
    public void updateTitle(){ 
         
        setTitle("title:" + t); 
        t ++; 
    } 
}
 

我相信,看完代码之后,稍微有编程经验的朋友都会明白,这段代码是每隔一段时间该改变应用程序的标题的。但是你可以运行一下试试,他是绝对不会有任何反应的,这是为什么呢?

主线程与子线程

原来,在Android应用程序启动的时候,就会启动一个主线程(即UI线程)。但有时需要进行一些耗时运算,如果这些运算都放在主线程中,那么我们知道主线程就会阻塞,这样将会造成不好的用户响应。

这时一般采取的策略就是开辟一个新的线程,但是如果在新的线程里面写了处理主线程的代码,那么就会出现上面的例子的情况,什么都不会发生,甚至报错。

其实原因很简单,在设计Android时处于安全考虑,子线程是无法修改主线程的显示的代码的。这是问题接踵而来,怎么在子线程中修改主线程的显示呢?这是应该使用Android提供的消息机制。在这里我先给出一个简单的例子,该例子是我看到一位牛人写的之后进行修改,更适合本文,代码如下:

package cn.edu.heut.zcl;
 
import java.util.Timer; 
import java.util.TimerTask; 
import android.app.Activity; 
import android.os.Bundle; 
import android.os.Message;
 
 
import android.os.Handler; 
 
public class Activity1 extends Activity {  
   
    private int t = 0; 
     
    private Handler mHandler = new Handler(){
 
                   @Override
                   public void handleMessage(Message msg) {
                            super.handleMessage(msg);
                            switch(msg.what){
                            case 1:
                                     updateTitle();
                                     break;
                            }
                   }
    };
    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.main);
         
        Timer timer = new Timer(); 
        timer.scheduleAtFixedRate(new MyTask(), 1, 5000); 
    } 
    private class MyTask extends TimerTask{ 
        @Override 
        public void run() { 
//              Activity1.this.updateTitle();
            Message message = new Message(); 
            message.what = 1; 
            mHandler.sendMessage(message); 
        }    
    } 
    public void updateTitle(){ 
         
        setTitle("title:" + t); 
        t ++; 
    } 
}
 

该例子是对上一个例子的修改,在主线程中声明了Handler对象,该对象用来接收并且处理收到的handlerMessage消息。在子线程中声明一个Message对象,并且为这个Message对象附上信息。通过Handler来发送消息。当主线程的接收消息收到信息后,进行处理,这就相当于在主线程中处理了。也就完成了子线程对主线程的改变。

 

 

 

 

 

0
0
分享到:
评论

相关推荐

    android开发从入门到精通光盘源代码

    "Android开发从入门到精通光盘源代码"是一个很好的学习资源,提供了随书配套的详细代码示例,帮助开发者深入理解Android应用开发的各个环节。这里我们将围绕这个主题,深入探讨Android开发中的关键知识点。 首先,...

    Android开发从入门到精通.pdf

    《Android开发从入门到精通》是一本专门为Android编程新手量身打造的教程。这本书全面覆盖了Android开发的基础知识,旨在帮助读者快速掌握Android应用开发的核心技能。以下是对书中的主要知识点进行的详细解读: 1....

    完整的android 安卓入门demo

    通过这个完整的Android入门Demo,开发者不仅可以学习到基础控件的使用,还能理解服务和广播的机制,掌握Android应用开发的核心概念。实践中不断练习,将有助于提升Android编程技能,为成为专业开发者奠定坚实基础。

    Android开发从入门到精通].扶松柏.扫描版

    Android开发从入门到精通是扶松柏编著的一本关于Android应用程序开发的书籍。该书面向初学者,旨在通过简洁明了的语言和生动的实例,详细介绍Android应用开发中所需掌握的各种技术。书中可能覆盖的内容包括但不限于...

    Android从入门到精通源代码 孙更新.rar

    《Android从入门到精通源代码 孙更新》是一份针对初学者和进阶开发者精心编写的资源包,旨在帮助读者全面掌握Android应用开发的核心技术。这份资料由知名Android讲师孙更新提供,通过深入浅出的讲解和实际源代码示例...

    android开发入门与实践体验-光盘代码

    1. **Android Studio简介**:作为Android开发的主要集成开发环境(IDE),Android Studio提供了丰富的工具和功能,如项目模板、调试器、代码补全等,使得开发过程更加高效。初学者需要熟悉其界面布局和基本操作,如...

    Android开发入门与实战 第二版 源码 最新更新

    《Android开发入门与实战 第二版》是一本专为初学者设计的Android编程书籍,旨在帮助读者快速掌握Android应用开发的基础知识和实践技巧。书中涵盖了从安装开发环境到创建完整应用的全过程,提供了丰富的实例和源码,...

    Android开发从入门到精通(随书光盘)【源码】第9章

    1. **Android基础**:第9章可能涵盖了Android的基本概念,包括Android系统架构、Activity生命周期、Intent机制等,这些都是Android开发的基础。 2. **UI设计**:Android应用的用户界面设计是开发者必须掌握的部分,...

    Android APP开发入门:使用Android Studio环境 配套范例程序1-6章

    本资料是"Android APP开发入门:使用Android Studio环境 配套范例程序1-6章",涵盖了初学者需要了解的基本概念和实践操作,但由于文件大小限制,只包含了前六章的实例代码。 **第一章:环境搭建与Hello World** 在...

    Android经典入门教程

    本教程旨在为初学者提供一个全面的Android入门指导,帮助他们理解并掌握Android应用开发的基础知识。 一、应用程序基础 在Android中,应用程序是由多个组件构成的,这些组件包括Activity、Service、...

    Android开发从入门到精通源码

    通过《Android开发从入门到精通源码》的学习,开发者不仅能够掌握基本的Android应用开发,还能深入源码层面,理解Android系统的运作机制,从而实现更高效、更专业的应用开发。提供的源代码文件(android开发从入门到...

    Android APP开发入门

    在Android APP开发领域,入门是每位开发者必经的阶段。Android Studio作为官方推荐的集成开发环境(IDE),为开发者提供了高效、便捷的开发工具。本书“Android APP开发入门”正是以此为切入点,引导读者深入了解...

    Android开发入门经典

    标题“Android开发入门经典”表明本文档是一本针对初学者的Android开发入门指南。描述部分提到的“第一部分 Android的入门基础”是指学习Android开发的起始阶段,需要了解Android平台的基本概念,包括它是什么,拥有...

    Android开发从入门到精通PPT

    1. **Android系统架构**:Android是一个开源的操作系统,由Linux内核、运行库层、应用程序框架和应用程序四大部分构成。了解这些组成部分及其相互关系对于深入理解Android开发至关重要。 2. **环境搭建**:包括安装...

    Android 移动开发入门与进阶 源代码

    "Android 移动开发入门与进阶 源代码"是一个宝贵的资源,它涵盖了从基础到高级的Android应用开发知识。由张立国编著的这本书,通过源代码的形式,帮助读者深入理解Android应用的构建过程。 本书分为多个章节,从"ch...

    Android渗透测试入门教程

    通过"Android渗透测试入门教程试读.pdf",读者可以预期学习到上述各方面的基础知识,了解渗透测试的流程和工具,以及如何运用这些知识来提升Android应用的安全性。"大学霸淘宝店.url"可能是一个提供更深入学习资源的...

    Android4游戏入门经典 原书第二版

    《Android4游戏入门经典 原书第二版》是一本专为初学者设计的Android游戏开发指南,旨在帮助读者从零基础逐步掌握Android游戏编程。这本书的英文原版提供了与众不同的教学体验,让读者能够接触并理解国际化的编程...

    Android 应用开发入门教程(经典版)

    【Android 应用开发入门教程】是一份详细指导初学者入门Android应用开发的经典教程,涵盖了Android系统的结构、SDK的使用,以及应用程序的开发流程。在系统介绍中,讲解了Android作为一个开源移动操作系统的概述,...

    Android快速入门.pdf

    《Android快速入门》这本书是为想要踏入Android开发领域的初学者准备的一份详尽指南。它旨在帮助读者快速掌握Android应用开发的基本概念和技术,让你能够构建自己的Android应用程序。在这个数字化时代,Android作为...

Global site tag (gtag.js) - Google Analytics