android基础Handler小例子
来源:互联网 发布:湖北师范大学金数据 编辑:程序博客网 时间:2024/05/29 09:06
package com.example2.wheee.myapplication;/** * Handler * 思路:当需要一个耗时的操作,例如: 联网读取数据,或者读取本地较大的一个文件的时候, * 你不能把这些操作放在主线程中,如果你放在主线程中的话,界面会出现假死现象, 如果5 * 秒钟还没有完成的话,会收到Android系统的一个错误提示 "强制关闭"。 这个时候我们 * 需要把这些耗时的操作,放在一个子线程中。 * --Handler,接受消息,处理消息 ,此Handler会与当前主线程一块运行 * * Message msg = new Message(); * Bundle b = new Bundle();// 存放数据 * b.putString("color", (num++)+"次"); * msg.setData(b); * 这几句存放数据发送至 Handler * * 转载:http://mobile.51cto.com/aprogram-442833.htm * RenjiaLu9527 20160625 **/import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.os.Looper;import android.os.Message;import android.util.Log;import android.widget.Button;import android.widget.Toast;public class MyHandlerActivity extends Activity { Button button; MyHandler myHandler; int num=0; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button = (Button) findViewById(R.id.button); myHandler = new MyHandler(); // 当创建一个新的Handler实例时, 它会绑定到当前线程和消息的队列中,开始分发数据 // Handler有两个作用, (1) : 定时执行Message和Runnalbe 对象 // (2): 让一个动作,在不同的线程中执行. // 它安排消息,用以下方法 // post(Runnable) // postAtTime(Runnable,long) // postDelayed(Runnable,long) // sendEmptyMessage(int) // sendMessage(Message); // sendMessageAtTime(Message,long) // sendMessageDelayed(Message,long) // 以上方法以 post开头的允许你处理Runnable对象 //sendMessage()允许你处理Message对象(Message里可以包含数据,) MyThread m = new MyThread(); new Thread(m).start(); } /** * 接受消息,处理消息 ,此Handler会与当前主线程一块运行 * */ class MyHandler extends Handler { public MyHandler() { } public MyHandler(Looper L) { super(L); } // 子类必须重写此方法,接受数据 @Override public void handleMessage(Message msg) { // TODO Auto-generated method stub Log.d("MyHandler", "handleMessage......"); super.handleMessage(msg); // 此处可以更新UI Bundle b = msg.getData(); String color = b.getString("color"); MyHandlerActivity.this.button.append(color); //再次创建线程(测试) MyThread m = new MyThread(); Toast.makeText(getApplicationContext(),"第 "+num+" 次新建线程",Toast.LENGTH_LONG).show(); new Thread(m).start(); } } /** * 子线程,非主线程 **/ class MyThread implements Runnable { public void run() { try { Thread.sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } Log.d("thread.......", "mThread........"); Message msg = new Message(); Bundle b = new Bundle();// 存放数据 b.putString("color", (num++)+"次"); msg.setData(b); MyHandlerActivity.this.myHandler.sendMessage(msg); // 向Handler发送消息,更新UI } }}
0 0
- android基础Handler小例子
- Android中Handler小例子
- android基础小例子1
- Handler用法小例子
- android的Handler 例子
- Android Handler简单例子
- js基础小例子
- Handler小例子逐步深入理解一
- android 基础 Handler
- Android基础-初遇Handler
- Android基础之Handler
- Android基础之Handler
- Android Handler基础
- android 一个小例子说明handler和AlertDialog的简单使用
- Pro Android学习笔记(八九):了解Handler(3):延迟执行小例子
- Pro Android学习笔记(八九):了解Handler(3):延迟执行小例子
- Android基础 基本UI控件运用的小例子
- Android小例子
- 日志分析查看
- 给图像添加高斯噪音
- spark mllib的优缺点分析
- 电脑端采集手机视音频并同步
- 自定义滑动开关按钮-SwitchButton-进阶
- android基础Handler小例子
- ArrayList、linklist、list的区别
- Instant Run requires 'Tools' | Android | Enable ADB integration' to be enabled
- C++设计模式系列之三行为型模式
- Solr的安装及配置
- c#字符转换
- 排序算法总结及实现
- Android Handler 详解
- app后端设计