当前位置:网站首页>在新线程中使用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);
});
}
}
边栏推荐
- Daily question 1189 Maximum number of "balloons"
- Quickly use Amazon memorydb and build your own redis memory database
- 容斥原理 AcWing 890. 能被整除的数
- [learning] database: MySQL query conditions have functions that lead to index failure. Establish functional indexes
- RGB LED infinite mirror controlled by Arduino
- MySQL advanced part 1: View
- TCP's understanding of three handshakes and four waves
- In depth analysis of for (VaR I = 0; I < 5; i++) {settimeout (() => console.log (I), 1000)}
- 栈 AcWing 3302. 表达式求值
- 4. Object mapping Mapster
猜你喜欢
实时时钟 (RTC)
Series of how MySQL works (VIII) 14 figures explain the atomicity of MySQL transactions and the principle of undo logging
Quickly use Amazon memorydb and build your own redis memory database
NotImplementedError: Cannot convert a symbolic Tensor (yolo_boxes_0/meshgrid/Size_1:0) to a numpy ar
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
区间问题 AcWing 906. 区间分组
求组合数 AcWing 887. 求组合数 III
SQL三种连接:内连接、外连接、交叉连接
求组合数 AcWing 889. 满足条件的01序列
高斯消元 AcWing 884. 高斯消元解异或线性方程组
随机推荐
There are three kinds of SQL connections: internal connection, external connection and cross connection
Leetcode-22: bracket generation
LeetCode-61
2022-5-第四周日报
[moviepy] unable to find a solution for exe
SPI details
MySQL advanced part 2: the use of indexes
Appium foundation - use the first demo of appium
11-gorm-v2-03-basic query
One question per day 1020 Number of enclaves
How to make water ripple effect? This wave of water ripple effect pulls full of retro feeling
Dataframe (1): introduction and creation of dataframe
Leetcode heap correlation
[rust notes] 17 concurrent (Part 1)
MPLS experiment
[rust notes] 14 set (Part 2)
C job interview - casting and comparing - C job interview - casting and comparing
[2021]IBRNet: Learning Multi-View Image-Based Rendering Qianqian
Winter messenger 2
Traversal of leetcode tree