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 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...
Handler是Android系统中用于线程间通信的重要工具,它允许开发者在不同的线程间传递消息并执行相应的处理。在Android应用开发中,由于主线程(UI线程)负责处理用户交互,因此耗时操作如网络请求、文件下载不应在...
【Android Handler 使用详解】 Handler 是 Android 平台中用于处理线程间通信的关键组件,尤其在涉及 UI(用户界面)更新时,它扮演着至关重要的角色。在 Android 应用程序启动时,系统会默认创建一个主线程,也...
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`是一个至关重要的组件,它用于处理主线程中的消息调度,实现UI线程与后台线程之间的通信。`Handler`、`Looper`和`Message`是Android异步处理的核心三剑客,它们共同协作,保证了应用的...
在 `flutter-permission-handler-master` 文件夹中,可能包含一个示例应用程序,展示了如何在实际项目中应用这些功能。 9. **文档**:作为一个成熟的开源项目,`flutter-permission-handler` 应该有详尽的文档,...
本示例中的“android demo”就是关于如何利用Handler的`postDelayed`方法和`Runnable`接口来实现一个延时3秒的Splash Screen。下面将详细解释这个过程以及涉及的技术点。 1. **Handler**: Handler是Android中处理...
在Android系统中,消息处理机制是至关重要的,它允许开发者在不同的线程间进行通信,尤其是主线程(UI线程)与其他工作线程...理解并熟练掌握`Looper`和`Handler`的使用,对于开发高效、响应式的Android应用至关重要。
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是一般使用Apache HTTP Client或者采用HttpURLConnect,但是直接使用这两个类库需要写大量的代码才能完成网络post和get请求,而使用android-async-http这个库可以大大的简化操作,它是...
Demo-实例讲解线程池里面的UI如何刷新,处理两个开发者头疼的问题: 1. 数据经常需要读取更新,并且比较耗时,需要分步刷新UI. 2. UI界面切换后,如何停止掉子线程里面正在读取的数据而不会将旧数据刷新到新UI界面上...
android.os.Handler的内存安全实现 问题 Handler的原始实现始终在执行队列中始终保持对处理程序的硬引用。 张贴到android.os.Handler Message或Runnable中的任何对象将在一段时间内被硬引用。 如果创建匿名Runnable...
在Android应用开发中,ANR(Application Not Responding)是一个常见的问题,表示用户界面无...结合其他性能监控工具和最佳实践,如使用AsyncTask、IntentService、Handler或使用后台进程,可以进一步减少ANR的发生。
- 因为`onProgressUpdate()`和`onSuccess()`/`onFailure()`是在UI线程之外被调用的,所以更新UI时需要使用`runOnUiThread()`或`Handler`来保证线程安全。 这个测试程序将帮助开发者理解如何在实际项目中整合这两个...
SWT同样不允许主线程外的其他线程直接访问控件。 所以SWT为我们提供了async执行Runnable的方法。 但是该方法只是用于接收异步线程消息,如果你在该方法中做过多的事情同样...具体使用请参考test包下的Handler使用事例。
android-async-http是专门针对Android在Apache的HttpClient基础上构建的异步http连接。所有的请求全在UI(主)线程之外执行,而callback使用了Android的Handler发送消息机制在创建它的线程中执行。
使用android-async-http这个库可以大大的简化操作,它是基于Apache’s HttpClient ,所有的请求都是独立在UI主线程之外,通过回调方法处理请求结果,采用android Handler message 机制传递信息
这需要合理使用Handler、Looper或AsyncTask等多线程机制。 - 数据处理和渲染必须高效,以避免延迟或卡顿,这可能涉及到内存管理、缓冲区优化以及适时的UI更新策略。 5. **动画与图形库**: - Android的Canvas和...
使用android-async-http这个库可以大大的简化操作,它是基于Apache’s HttpClient ,所有的请求都是独立在UI主线程之外,通过回调方法处理请求结果,采用android Handler message 机制传递信息
本篇文章将详细介绍如何导入并使用 Android-22 SDK 源码,以及在 Eclipse、IntelliJ IDEA 和 Android Studio 中进行源码级别的调试和分析。 首先,我们来看如何导入源码到开发环境。在 Eclipse 中,可以使用 ADT ...