protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main1);
et = (EditText) findViewById(R.id.editText1);
tv = (TextView) findViewById(R.id.tv);
// thread = new CalThread();// 创建子线程并启动子线程
// thread.start();
} /**
 * private Handler handler1 = new Handler() { //接受和处理消息 public void
 * handleMessage(Message msg1) {
 * tv.setText(et.getText().toString()+"以内的质数有:"+msg1.toString()); } };
 */ public Handler handler = new Handler() {
public void handleMessage(Message msg) {
if (msg.what == FLAG) {
if (msg.what == FLAG) {
Set<Integer> set = msg.obj;
// 把值赋值给TextView就可以显示了,这个你自己写吧
// tv.setText(...);
}
}
}
}; public class CalThread extends Thread { // 子线程 private int num; public CalThread(int num) {
this.num = num;
} public void run() {
Set<Integer> set = new HashSet<Integer>();
// int num = msg.arg1;
test: for (int i = 2; i <= num; i++) {// 判断2-输入值之间的质数
for (int j = 2; j <= Math.sqrt(i); j++) {
if (i != 2 && i % j == 0) {// 不是质数,跳出循环
continue test;
}
}
set.add(i);
// 如果先在这个时候通知主线程更新UI可以在这里调用Handler(注意这个Handler是在主线程中声明定义的) Message msg = handler.obtainMessage();
msg.what = FLAG;
msg.obj = set;
handler.sendMessage(msg);
}
}
} public void myCal(View view) { // 按钮事件
String msg = et.getText().toString();
// Message m = new Message();
// m.what = FLAG;
// m.arg1 = Integer.parseInt(msg);
// thread.handler.sendMessage(m); thread = new CalThread(Integer.parseInt(msg));// 创建子线程并启动子线程
thread.start();
}