当前位置:网站首页>在新线程中使用Handler
在新线程中使用Handler
2022-07-05 06:20:00 【v_3483608762】
- 主线程里自动创建了Handler,因此不需要初始化
。当自己new Thread时候,也要改变ui或者防止ANR时创建Handler
在线程中需要 1,Looper.prepare() 2,newHandler 重写handlerMessage 3,looper.loop
下面程序是传一个数,Toas显示里面的质数。
package com.example.handl;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
public final static String UPPER_NUM="upper";
private EditText etNum;
private CalThread calThread;
class CalThread extends Thread{
private Handler mHandler;
@Override
public void run() {
super.run();
Looper.prepare();
mHandler=new Handler(){
@Override
public void handleMessage(@NonNull Message msg) {
super.handleMessage(msg);
if (msg.what==0x123){
int upper = msg.getData().getInt(UPPER_NUM);
List<Integer> nums = new ArrayList<>();
outer:
for (int i = 2; i < upper; i++) {
int j=2;
while(j<Math.sqrt(i)){
if(i!=2&&i%j==0){
continue outer;
}
j++;
}
nums.add(i);
}
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=findViewById(R.id.editText);
calThread= new CalThread();
calThread.start();
Button bn =findViewById(R.id.button);
bn.setOnClickListener(view -> {
Message msg=new Message();
msg.what=0x123;
Bundle bundle=new Bundle();
bundle.putInt(UPPER_NUM,Integer.parseInt(etNum.getText().toString()));
msg.setData(bundle);
calThread.mHandler.sendMessage(msg);
});
}
}
边栏推荐
- SQL三种连接:内连接、外连接、交叉连接
- Doing SQL performance optimization is really eye-catching
- 【LeetCode】Easy | 20. Valid parentheses
- Leetcode dynamic programming
- Suppose a bank's ATM machine, which allows users to deposit and withdraw money. Now there is 200 yuan in an account, and both user a and user B have the right to deposit and withdraw money from this a
- Overview of variable resistors - structure, operation and different applications
- Shutter web hardware keyboard monitoring
- Quickly use Amazon memorydb and build your own redis memory database
- 1.13 - RISC/CISC
- Data visualization chart summary (II)
猜你喜欢
Is it impossible for lamda to wake up?
LeetCode 0108. Convert an ordered array into a binary search tree - the median of the array is the root, and the left and right of the median are the left and right subtrees respectively
Operator priority, one catch, no doubt
Sqlmap tutorial (II) practical skills I
3.Oracle-控制文件的管理
MySQL advanced part 1: View
MySQL advanced part 2: the use of indexes
2021apmcm post game Summary - edge detection
Liunx starts redis
Leetcode array operation
随机推荐
博弈论 AcWing 893. 集合-Nim游戏
1.15 - input and output system
[rust notes] 13 iterator (Part 2)
MySQL advanced part 1: View
MySQL advanced part 2: MySQL architecture
Shutter web hardware keyboard monitoring
TypeScript 基础讲解
LeetCode-61
Open source storage is so popular, why do we insist on self-development?
In depth analysis of for (VaR I = 0; I < 5; i++) {settimeout (() => console.log (I), 1000)}
There are three kinds of SQL connections: internal connection, external connection and cross connection
Golang uses context gracefully
Matrixdb V4.5.0 was launched with a new mars2 storage engine!
Leetcode heap correlation
Bash exercise 17 writing scripts to install the server side of FRP reverse proxy software
How to understand the definition of sequence limit?
New title of module a of "PanYun Cup" secondary vocational network security skills competition
[BMZCTF-pwn] ectf-2014 seddit
LeetCode 0108. Convert an ordered array into a binary search tree - the median of the array is the root, and the left and right of the median are the left and right subtrees respectively
博弈论 AcWing 892. 台阶-Nim游戏