`
as11051105
  • 浏览: 59898 次
  • 性别: Icon_minigender_1
  • 来自: 贵阳
社区版块
存档分类
最新评论

android--Handler的使用

阅读更多
Handler基本概念:
       Handler主要用于异步消息的处理:当发出一个消息之后,首先进入一个消息队列,发送消息的函数即刻返回,而另外一个部分逐个的在消息队列中将消息取出,然后对消息进行出来,就是发送消息和接收消息不是同步的处理。 这种机制通常用来处理相对耗时比较长的操作。

   使用一个自己项目的代码来介绍一下Handler。

private Handler handler = new Handler() {
		@Override
		public void handleMessage(Message msg) {
			super.handleMessage(msg);

			switch (msg.what) {
				case 0:
					SaleUtil.showToast(context, R.string.tip_bind_succ, 1000);
					// 存储当前绑定的账户
					userInfo.setVerifyFlag(1);
					UserInfoDao.addUser(context, userInfo);
					
					break;
				case 1:
					SaleUtil.showToast(context, R.string.tip_bind_fail, 1000);
					UserInfoDao.addUser(context, userInfo);
					break;
				case 2:
					SaleUtil.showToast(context, R.string.tip_common_error, 1000);
					break;
			}
		}
	};


然后在点击事件中添加相应的代码:(这是一个用于登陆验证的代码,点击登陆时先弹出一个进度条,同时进行登陆验证,验证后弹出一个Toast)

public void onClick(View v) {
				final String userPhone = userPhoneEditText.getText().toString().trim();
				final String userPwd = userPwdEditText.getText().toString().trim();

				// 手机号码或登录密码为空时给出提示
				if ("".equals(userPhone) || "".equals(userPwd))
					SaleUtil.showToast(context, context.getResources().getString(R.string.tip_empty_account), 1000);
				else {
					userInfo = new UserInfo();
					userInfo.setUserPhone(userPhone);
					userInfo.setUserPwd(userPwd);
					userInfo.setVerifyFlag(0);

					// 验证过程中给出进度提示
					progressDialog = ProgressDialog.show(context, null, getResources().getText(R.string.tip_binding), true, true);

					new Thread() {
						@Override
						public void run() {
							// 异步调用webservice接口验证账号的有效性
							String verifyResult = DataRequestUtil.verifyUser(context, userPhone, userPwd);
							if (null == verifyResult)
					handler.sendEmptyMessage(2);
							else					handler.sendEmptyMessage(Integer.parseInt(verifyResult));					}
					}.start();
				}
				dialog.dismiss();
			}


分享到:
评论

相关推荐

    Android代码-android-weak-handler

    Android Weak Handler Memory safer implementation of android.os.Handler Problem Original implementation of Handler always keeps hard reference to handler in queue of execution. Any object in Message or...

    玩转Android---组件篇---Handler的使用

    Handler是Android系统中用于线程间通信的重要工具,它允许开发者在不同的线程间传递消息并执行相应的处理。在Android应用开发中,由于主线程(UI线程)负责处理用户交互,因此耗时操作如网络请求、文件下载不应在...

    android-Handler的使用

    【Android Handler 使用详解】 Handler 是 Android 平台中用于处理线程间通信的关键组件,尤其在涉及 UI(用户界面)更新时,它扮演着至关重要的角色。在 Android 应用程序启动时,系统会默认创建一个主线程,也...

    Android代码-Api-Error-Handler

    Introduction Declarative error handling.... @AutoHandler // let compiler know it should analyse your class public interface SimplerErrorListener { // your code has to implement this in

    android学习--handler

    在Android开发中,`Handler`是一个至关重要的组件,它用于处理主线程中的消息调度,实现UI线程与后台线程之间的通信。`Handler`、`Looper`和`Message`是Android异步处理的核心三剑客,它们共同协作,保证了应用的...

    flutter-permission-handler,flutter的许可插件。这个插件提供了一个跨平台(ios,android)api来请求和检查权限。.zip

    在 `flutter-permission-handler-master` 文件夹中,可能包含一个示例应用程序,展示了如何在实际项目中应用这些功能。 9. **文档**:作为一个成熟的开源项目,`flutter-permission-handler` 应该有详尽的文档,...

    android demo,使用Handler的postDelay,Runnable run实现延时3秒的splash。

    本示例中的“android demo”就是关于如何利用Handler的`postDelayed`方法和`Runnable`接口来实现一个延时3秒的Splash Screen。下面将详细解释这个过程以及涉及的技术点。 1. **Handler**: Handler是Android中处理...

    Android的消息处理机制--Looper,Handler

    在Android系统中,消息处理机制是至关重要的,它允许开发者在不同的线程间进行通信,尤其是主线程(UI线程)与其他工作线程...理解并熟练掌握`Looper`和`Handler`的使用,对于开发高效、响应式的Android应用至关重要。

    react-native-exception-handler-example:一个示例仓库显示了如何集成react-native-exception-handler

    git clone https://github.com/master-atul/react-native-exception-handler-example yarn install react-native run-ios --configuration Release或react-native run-android --variant=release 即使在开发模式...

    Android-async-http-1.4.9.jar

    android-async-http-1.4.9.jar是一般使用Apache HTTP Client或者采用HttpURLConnect,但是直接使用这两个类库需要写大量的代码才能完成网络post和get请求,而使用android-async-http这个库可以大大的简化操作,它是...

    Android异步更新UI-线程池-Future-Handler实例分析

    Demo-实例讲解线程池里面的UI如何刷新,处理两个开发者头疼的问题: 1. 数据经常需要读取更新,并且比较耗时,需要分步刷新UI. 2. UI界面切换后,如何停止掉子线程里面正在读取的数据而不会将旧数据刷新到新UI界面上...

    android-weak-handler:android.os.Handler的内存安全实现

    android.os.Handler的内存安全实现 问题 Handler的原始实现始终在执行队列中始终保持对处理程序的硬引用。 张贴到android.os.Handler Message或Runnable中的任何对象将在一段时间内被硬引用。 如果创建匿名Runnable...

    Android-ANR-WatchDog一个用于检测AndroidANR(应用不响应)的watchdog

    在Android应用开发中,ANR(Application Not Responding)是一个常见的问题,表示用户界面无...结合其他性能监控工具和最佳实践,如使用AsyncTask、IntentService、Handler或使用后台进程,可以进一步减少ANR的发生。

    android-async-http progress-wheel测试程序

    - 因为`onProgressUpdate()`和`onSuccess()`/`onFailure()`是在UI线程之外被调用的,所以更新UI时需要使用`runOnUiThread()`或`Handler`来保证线程安全。 这个测试程序将帮助开发者理解如何在实际项目中整合这两个...

    swt-async-handler-1.0

    SWT同样不允许主线程外的其他线程直接访问控件。 所以SWT为我们提供了async执行Runnable的方法。 但是该方法只是用于接收异步线程消息,如果你在该方法中做过多的事情同样...具体使用请参考test包下的Handler使用事例。

    android-async-http-1.4.6

    android-async-http是专门针对Android在Apache的HttpClient基础上构建的异步http连接。所有的请求全在UI(主)线程之外执行,而callback使用了Android的Handler发送消息机制在创建它的线程中执行。

    android-async-http-1.4.9

    使用android-async-http这个库可以大大的简化操作,它是基于Apache’s HttpClient ,所有的请求都是独立在UI主线程之外,通过回调方法处理请求结果,采用android Handler message 机制传递信息

    android-audio-visualizer,android媒体播放器的音频可视化.zip

    这需要合理使用Handler、Looper或AsyncTask等多线程机制。 - 数据处理和渲染必须高效,以避免延迟或卡顿,这可能涉及到内存管理、缓冲区优化以及适时的UI更新策略。 5. **动画与图形库**: - Android的Canvas和...

    android-async-http-1.4.4

    使用android-async-http这个库可以大大的简化操作,它是基于Apache’s HttpClient ,所有的请求都是独立在UI主线程之外,通过回调方法处理请求结果,采用android Handler message 机制传递信息

    android-22 sdk source

    本篇文章将详细介绍如何导入并使用 Android-22 SDK 源码,以及在 Eclipse、IntelliJ IDEA 和 Android Studio 中进行源码级别的调试和分析。 首先,我们来看如何导入源码到开发环境。在 Eclipse 中,可以使用 ADT ...

Global site tag (gtag.js) - Google Analytics