android中的Handler(2)
一、独立于主线程的Handler
HandlerThread是一个独立于主线程的线程,注意必须运行HandlerThread的start方法
通过Looper向HandlerThread中添加Handler,Handler于是就独立于主线程了
二、代码
package linys.handle;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.HandlerThread;
import android.os.Looper;
import android.os.Message;
/**
*
* @Project: Android_HandlerThread
* @Desciption: 使用HandlerThread 使Handle中的Runnable独立于Main线程
* @Author: LinYiSong
* @Date: 2011-3-9~2011-3-9
*/
public class HandlerThreadlerDemo extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
System.out.println("Main--->"+Thread.currentThread().getId());//通过比较Main和MyHandler的id说明线程独立
//创建一个HandlerThread,就是创建一个独立于Main线程的线程,但必须调用start
HandlerThread handlerThread=new HandlerThread("handle");
handlerThread.start();
//通过Looper向HandlerThread中添加Handler
MyHandler myHandler=new MyHandler(handlerThread.getLooper());
Message msg=myHandler.obtainMessage();
//利用Message中的arg1变量传递信息
// msg.arg1=1;
// msg.sendToTarget();//向拥有此Message中传递信息,此处是myHandler
//利用Message中的Bundle传递信息
/*
* Bundle可以认为是一个key值只能是String的Map
*/
Bundle bundle=new Bundle();
bundle.putString("username","linys");
bundle.putInt("password",123456);
msg.setData(bundle);
msg.sendToTarget();
}
class MyHandler extends Handler{
public MyHandler(Looper looper){
super(looper);
}
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
// int arg1=msg.arg1;
// System.out.println("MyHandler--->"+arg1);
// System.out.println("MyHandler--->"+Thread.currentThread().getId());//验证线程独立
Bundle bundle=msg.getData();
System.out.println("username: "+bundle.getString("username")+" password: "+bundle.getInt("password"));
System.out.println("MyHandler--->"+Thread.currentThread().getId());
}
}
class MyRun implements Runnable{
@Override
public void run() {
System.out.println("MyRun--->"+Thread.currentThread().getId());
}
}
}
分享到:
相关推荐
android 中Handler 的几种写法,很简单的demo,大神简单修改下,用的是Handler.Callback,的方法
Android中handler的使用,处理多线程的使用
Android的Handler使用方法总结,不错的文档,跟大家分享分享
1.handler是什么? 2.handler怎么用? 3.为什么要用handler?
在Android中使用AsyncTask和Handler线程间交互的方式,详情参见博客:http://www.cnblogs.com/plokmju/p/android_AsyncTask.html和http://www.cnblogs.com/plokmju/p/android_Handler.html
Android Handler类详解 Android Handler类详解 Android Handler类详解 Android Handler类详解
android Handler的使用,我也刚开始学习,从别处下载了给大家分享
Android中的Handler很重要,但是很简单,学好Handler很重要~
import android.os.Handler; import android.app.Activity; import android.view.Menu; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { ...
android handler的一些测试,套用他人的代码做的一些测试,多个线程sendmessage,该由那个handler处理?
Android中多线程的Handler的工作原理,其中涉及到MessageQueue和Looper。详情可以参见博客:http://www.cnblogs.com/plokmju/p/android_Looper.html
Android Handler传值的,简单的介绍了Handler的用法
【Android开发入门】Android线程之Handler
这个资源主要有三个Demo文件 是用来展示Handler的异步处理消息的 第一个Demo展示了如何启动线程和暂停线程 第二个Demo采用了Handler的消息队列机制 第三个Demo用HandlerThread的looper来构造一个handler,然后该...
以前刚接触的Handler的时候,感觉总是很困惑,对Handler原理也是一知半解,现在对Handler知识点总结一下,写了一个Demo,供参考。http://blog.csdn.net/yalinfendou博客中有详细介绍……
Android Handler Looper
Android 用handler机制联网获取图片能在实体机和虚拟机上运行,无广告,多次点击会造成主线程阻塞,出现anr;未实现联网获取图片的功能。
android demo,使用Handler的postDelay,Runnable run实现延时3秒的splash。