- package com.nyl.handlerdemo;
- import android.app.Activity;
- import android.os.Handler;
- import android.os.Looper;
- import android.os.Message;
- import android.os.Bundle;
- import android.view.View;
- import android.widget.EditText;
- import android.widget.Toast;
- import java.util.ArrayList;
- import java.util.List;
- public classMainActivityextends Activity {
- private staticString UPPER_NUM = "upper";
- private EditText etNum;
- CalThread calThread;
- //定义一个线程类
- classCalThreadextends Thread{
- public Handler handler;
- public void run(){
- Looper.prepare();
- handler =new Handler(){
- //定义处理消息的方法
- @Override
- public void handleMessage(Message msg) {
- if(msg.what == 0x123){
- intupper = msg.getData().getInt(UPPER_NUM);
- List nums = newArrayList<>();
- //计算从2开始,到upper的所有质数
- outer:
- for(inti = 2; i <= upper; i++){
- //用i处于从2开始,到i的平方根的所有数
- for(intj = 2; j<= Math.sqrt(i); j ++){
- // 如果可以整除,表明这个数不是质数
- if(i != 2 && i % j == 0) {
- continue outer;
- }
- }
- nums.add(i);
- }
- // 使用Toast显示统计出来的所有质数Toast.makeText(MainActivity.this , nums.toString(), Toast.LENGTH_LONG).show();
- }
- }
- };
- Looper.loop();
- }
- }
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- etNum = (EditText) findViewById(R.id.etNum);
- calThread =new CalThread();
- //启动新线程
- calThread.start();
- }
- //为按钮的点击事件提供事件处理函数
- public void cal(View source){
- //创建消息Message message =new Message();
- message.what = 0x123;
- Bundle bundle =new Bundle();
- bundle.putInt(UPPER_NUM,Integer.parseInt(etNum.getText().toString()));
- message.setData(bundle);
- //向新线程中的Handler发送消息
- calThread.handler.sendMessage(message);
- }
- }
来源: http://www.bubuko.com/infodetail-1984901.html