`

android开发笔记-Handler的理解

 
阅读更多

1.Handler的定义

在主线程中创建, 用于接收子线传递过来的数据, 更新主线程UI.

 

2.Handler特点:

1.Handler可以分发Message对象和Runnable对象到主线程中

2.每个Handler实例,都会绑定到创建他的线程中(一般是位于主线程)

3.详细解释:

对于一些耗时操作如:用户登录时请求网络数据, 文件读写等, 需要创建一个子线程(以免造成主线程假死现象).在子线程

中处理这些耗时操作,  这过程中需要更新主线程UI的话, 将结果传递给handler , 通过handler更新UI.

 

4.为什么要通过handler更新主线程, 在子线程更新主线程UI有问题吗:

因为主线程view是线程不安全的. 如果在子线程中更新主线程UI, 会造成线程直接的竞争,这样会很危险. 需要统一到主线程更新UI操作.

 

5. 例子:

已加载用户信息为例:

1). 在主线程创建Handler

mHandler = new Handler(){

			//取消ProgressDialog提示框, 通过Toast提示用户数据加载成功.
			@Override
			public void handleMessage(Message msg) {
				 switch (msg.what) {  
	                case TASK_PROCED:  
	                	if(mProgressDialog!=null){
	                		mProgressDialog.cancel();	
	                	}
	                	Toast.makeText(UserDetailsActivity.this, "用户信息加载成功", Toast.LENGTH_LONG).show();
	                }
			}
			
		};			

 

2). 在子线程中发送数据到主线程:

private class LoadUser extends AsyncTask<Void, Void, String>{

		@Override
		protected String doInBackground(Void... params) {
			
			try {
				
				SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(UserDetailsActivity.this);
				
				String userName = Preferences.getUserName(prefs);
				String passowrd = Preferences.getUserPassword(prefs);
				
				Foursquared foursquared = (Foursquared) getApplication();
				Foursquare foursquare = foursquared.getFoursquare();
				
				//根据用户名和密码重新更新用户信息
				User user = foursquare.loginUser(userName, passowrd);
				
				if(user!=null){
					Log.i("UserDetailsActivity" , "mail = "+user.getEmail());
				}else{
					Log.i("UserDetailsActivity" , " user is null");
				}
				
				Preferences.storeUser(prefs.edit(), user);
				
				if(user!=null){
					Message msg = new Message();
					msg.what = TASK_PROCED ;
					mHandler.sendMessage(msg); //向主线程发送数据.
				}
				
			} catch (FoursquareCredentialsException e) {
				e.printStackTrace();
			} catch (FoursquareParseException e) {
				e.printStackTrace();
			} catch (FoursquareException e) {
				e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			}
			return null;
		}
	};

 

 

 参考文章: http://dev.10086.cn/cmdn/wiki/index.php?doc-view-4582.html

分享到:
评论

相关推荐

    新版Android开发教程及笔记-完整版

    新版Android开发教程及笔记将涵盖Android系统的基本架构、应用程序生命周期管理以及UI设计等核心概念。 1. **Android系统架构**:Android系统分为应用层、应用框架层、系统运行库层和Linux内核层。开发者主要在应用...

    新版Android开发教程笔记--基础入门一

    这篇新版的Android开发教程笔记将带你进入Android编程的世界,从最基础的入门概念开始讲解。本文主要围绕以下几个关键知识点展开: 1. **Android SDK(软件开发工具包)**:Android SDK是开发者进行Android应用开发...

    Android开发笔记全集

    《Android开发笔记全集》是一份综合性的学习资源,涵盖了Android应用开发的多个核心领域,旨在帮助开发者系统地掌握Android平台的开发技能。这个压缩包包含的文件名为“Android开发笔记”,暗示着它可能是一个系列的...

    Android群英传笔记-----by ---------刘某人程序员

    《Android群英传笔记》是一本深度探讨Android开发技术的宝贵资料,由知名开发者刘某人倾力编写。这本书详尽地涵盖了Android应用开发的各个方面,旨在帮助读者从基础到高级全面掌握Android编程技能。笔记内容丰富,...

    新版Android开发教程;笔记--基础入门二

    在Android开发领域,基础知识是构建复杂应用的基石。这篇新版的Android开发教程——"基础入门二"涵盖了Android开发的关键概念和技术,旨在帮助初学者迅速掌握Android应用开发的基本技能。以下是对教程内容的详细概述...

    Android开发教程笔记完全版 pdf

    这份"Android开发教程笔记完全版"涵盖了Android开发的基础到高级主题,旨在帮助开发者全面理解并掌握Android应用的构建过程。 一、Android系统概述 Android是由Google主导的开源操作系统,基于Linux内核。它的开放...

    android开发笔记入门级

    这份"android开发笔记入门级"资源,正是为了帮助初学者系统地学习和理解Android应用开发所准备的。它以易懂的方式,逐步引导学习者深入这个充满机遇的领域。 首先,我们要明白Android是一个开源的操作系统,主要...

    Android开发艺术探索-清晰PDF+随书源码+读书笔记

    总之,《Android开发艺术探索》是一本全面覆盖Android开发关键领域的书籍,结合清晰的PDF、实际的源码示例和有价值的读书笔记,为开发者提供了一条系统学习和提升技能的道路。无论是初学者还是经验丰富的开发者,都...

    新版Android开发教程&笔记2--基础入门二

    "新版Android开发教程&笔记2--基础入门二"聚焦于为开发者提供最新的Android开发知识,帮助初学者迅速掌握Android应用开发的基本概念和技术。这篇教程可能涵盖了以下几个核心知识点: 1. **Android Studio入门**:...

    Android开发教程笔记完全版.zip

    这份"Android开发教程笔记完全版.zip"包含了一份详细的Android编程学习资源,可能是由一位经验丰富的开发者或教育者整理而成,旨在帮助初学者和有经验的开发者深入理解Android应用开发。 **Android系统架构** ...

    android开发笔记,代码+实例

    这篇“Android开发笔记,代码+实例”教程,正如其标题所示,提供了全面的入门指导,旨在帮助新手快速上手并精通Android应用开发。它不仅包含了理论知识,更注重通过实际代码示例来加深理解。 一、Android开发环境...

    超全android 教程 笔记

    Android教程笔记涵盖了大量的知识点,是学习Android开发的重要资源。以下是对这些笔记的详细解析: 1. **Android基础知识**:这是Android开发的起点,包括对Java语言的理解,因为Android应用程序主要用Java编写。...

    Android开发笔记 Handler使用总结

    【Android开发笔记:Handler使用总结】 在Android应用开发中,Handler是处理线程间通信和UI更新的关键组件。当应用程序启动时,Android系统会默认创建一个主线程(UI线程),该线程主要负责管理界面中的UI控件,...

    安卓基础笔记-超详细

    这篇笔记详细地涵盖了安卓开发的基本概念、环境搭建、编程语言、UI设计、事件处理、数据存储以及网络通信等多个方面。下面将按照每一天的学习内容进行详细阐述。 ### Day01: 安卓环境搭建与Hello World 在第一天的...

    Android开发教程笔记完全版.rar

    这份"Android开发教程笔记完全版"的压缩包文件包含了全面的学习资料,对于初学者和有一定经验的开发者来说,都是宝贵的资源。下面我们将深入探讨其中可能涵盖的知识点。 1. **Android系统架构**:Android系统分为...

    Android开发教程笔记完全版

    这份"Android开发教程笔记完全版"涵盖了Android应用开发的各个方面,旨在帮助初学者和有一定经验的开发者深入理解平台的工作原理,提升开发技能。 首先,笔记可能从Android的基础知识开始,介绍Android操作系统的...

    android开发笔记

    总的来说,这份"android开发笔记"全面覆盖了Android开发的基础知识,是初学者的宝贵参考资料,能够帮助他们快速理解和掌握Android开发的核心概念和技术。通过学习这些内容,开发者可以建立起坚实的Android开发基础,...

Global site tag (gtag.js) - Google Analytics