<Handler>练习
2016-06-09 23:52
447 查看
package com.crazyit.handlerdemo; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Looper; import android.os.Message; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; import java.util.ArrayList; import java.util.List; /** * Handler 工作原理 */ public class HandlerTestActivity extends Activity { public static final String UPPER_NUM = "upper"; EditText input_num; Button btn; NewThread newThread; class NewThread extends Thread { public Handler mHandelr; @Override public void run() { Looper.prepare(); //创建当前线程的 Looper对象 mHandelr = new Handler() {//创建 Handler() 子类 然后重写 handleMessage() 方法 @Override public void handleMessage(Message msg) { if (msg.what == 0x123) { int upper = msg.getData().getInt(UPPER_NUM); List<Integer> nums = new ArrayList<Integer>(); //计算 从2开始 到upper的所有质数 outer: for (int i = 2; i <= upper; i++) { //用i除以从2开始, 到i的平方根的所有数 for (int j = 2; j <= Math.sqrt(i); j++) { //如果可以整除,则表明这个数不是质数 就跳过 if (i != 2 && i % j == 0) { continue outer; //就跳过 } } nums.add(i); } Toast.makeText(HandlerTestActivity.this, nums.toString(), Toast.LENGTH_LONG).show(); } } }; Looper.loop(); //最后调用Looper的 loop( )方法,启动Looper } } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_handler_test); input_num = (EditText) findViewById(R.id.et_num); newThread = new NewThread(); //启动线程 newThread.start(); } //为按钮的点击事件绑定处理事件 public void jiSuan(View view) { //创建消息 Message msg = new Message(); msg.what = 0x123; Bundle bundle = new Bundle(); bundle.putInt(UPPER_NUM, Integer.parseInt(input_num.getText().toString().trim())); msg.setData(bundle); //向子线程中的 Handler 发送消息 newThread.mHandelr.sendMessage(msg); } }
布局文件
<?xml version="1.0" encoding="utf-8"?> <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" tools:context="com.crazyit.handlerdemo.HandlerTestActivity"> <EditText android:id="@+id/et_num" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="请输入数字" android:inputType="number" /> <Button android:id="@+id/btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="jiSuan" android:text="计算" /> </LinearLayout>
相关文章推荐
- java中有无参数和返回值的方法
- Codeforces Round #356 (Div. 2) C
- PRVF-4664 PRVF-4657: Found inconsistent name
- SELinux 对nginx访问目录的影响
- Hadoop on Yarn 各组件详细原理
- 虚幻引擎4系列教程3(霜之小刀)(附视频)--游戏是需要逻辑的
- regex pattern in python for parsing html
- constructor and destructor 概述
- Android 轻松实现仿淘宝地区选择
- ORA-27063: skgfospo: number of bytes rea
- 多线程开发(三)-AnsycTask用法与解惑
- Java FX 8 - Tableview: Display Objects Within Objects
- 关于Genymotion模拟器联网问题解决方案
- Codeforces Round #356 (Div. 2) B
- 团队项目-个人博客6.9
- 【CJ】Rather Perplexing Showdown
- ASP.NET MVC URL重写与优化(进阶篇)-继承RouteBase玩转URL
- 模板方法模式(Template Pattern)
- Linux搭建Maven环境
- oracle 10g rac 安装图解