Android中Handler的简单应用(一)
2015-07-30 18:59
393 查看
Handler在android里负责发送和处理消息。它的主要用途:
1.按计划发送消息或执行某个Runnanble(使用POST方法),类似定时器;
2.从其他线程中发送来的消息放入消息队列中,避免线程冲突(常见于更新UI线程);
Handler主要用于异步消息的处理:当发出一个消息之后,首先进入一个消息队列,发送消息的函数即刻返回,而另外一个部分逐个的在消息队列中将消息取出,然后对消息进行出来,就是发送消息和接收消息不是同步的处理。这种机制通常用来处理相对耗时比较长的操作。
今天我们来介绍的只是Handler的最基本用法和意义,好了,上代码:
MainActivity.java
activity_main.xml:
效果图:
1.按计划发送消息或执行某个Runnanble(使用POST方法),类似定时器;
2.从其他线程中发送来的消息放入消息队列中,避免线程冲突(常见于更新UI线程);
Handler主要用于异步消息的处理:当发出一个消息之后,首先进入一个消息队列,发送消息的函数即刻返回,而另外一个部分逐个的在消息队列中将消息取出,然后对消息进行出来,就是发送消息和接收消息不是同步的处理。这种机制通常用来处理相对耗时比较长的操作。
今天我们来介绍的只是Handler的最基本用法和意义,好了,上代码:
MainActivity.java
package com.whisker.handlertest; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; public class MainActivity extends Activity { private Button startButton = null; private Button stopButton = null; private TextView text_view = null; private int i = 0; Handler handler = new Handler(); Runnable update_thread = new Runnable() { @Override public void run() { i++; text_view.append("\nUpdateThread..." + i); handler.postDelayed(update_thread, 1000); } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); text_view = (TextView)findViewById(R.id.text_view); startButton = (Button)findViewById(R.id.start); stopButton = (Button)findViewById(R.id.stop); startButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { handler.post(update_thread); } }); stopButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { handler.removeCallbacks(update_thread); } }); } }
activity_main.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.whisker.handlertest.MainActivity" > <TextView android:id="@+id/text_view" android:layout_width="match_parent" android:layout_height="200dip" android:text="Test!" /> <Button android:id="@+id/start" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Start"/> <Button android:id="@+id/stop" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Stop"/> </LinearLayout>
效果图:
相关文章推荐
- android ViewDragHelper完全解析 自定义ViewGroup神器
- android沉浸式状态栏实现细节
- android Json解析
- AndroidStudio界面出现乱码
- Android 使用javaMail jar包 发送邮件
- android 进程/线程管理(一)----消息机制的框架
- 一个简单的Android图片处理Demo
- Android工程项目没有错却出现红叉—解决办法
- Android studio使用的小问题,小技巧总结----持续更新中
- Android 5.0学习之使用Palette
- Android字体属性Paint.FontMetrics
- 使用Android Studio 1.3 版本进行NDK开发
- 当启动多个Activity后从最后一个activiy越级返回方法
- 分析android动画模块
- Android 日志级别总结
- Android中loader的学习:
- com.android.dex.DexException: Multiple dex files define Landroid/support/v4/accessibilityservice
- Android启动过程学习总结
- Android禁止ViewPager的左右滑动
- xml布局内容总结(三)--Android