Android 학습 기록 - Handler를 사용하여 스레드에서 데이터 전달
5186 단어 안드로이드 노트
public class MainActivity extends Activity implements View.OnClickListener{
private EditText editText;
private Button button;
private TextView textView;
private ThreadTest threadTest;
public Handler uihandler=new Handler(){
@Override
public void handleMessage(Message msg) {
textView.setText((msg.getData().getIntegerArrayList("list")).toString());
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.thread);
init();
initlisten();
}
private void init(){
editText=(EditText) findViewById(R.id.e_1);
button=(Button) findViewById(R.id.b_1);
textView=(TextView)findViewById(R.id.t_1);
threadTest=new ThreadTest(uihandler);
threadTest.start();
}
private void initlisten(){
button.setOnClickListener(this);
}
@Override
public void onClick(View v) {
Message msg=new Message();
msg.what=1;
Bundle bundle=new Bundle();
bundle.putInt("test",Integer.parseInt(editText.getText().toString()));
msg.setData(bundle);
threadTest.handler.sendMessage(msg);
}
}
ThreadTest.class
public class ThreadTest extends Thread {
public android.os.Handler handler;
public Handler uihandler;
public ThreadTest(Handler mhandler){
uihandler=mhandler;
}
public void run(){
Looper.prepare();
handler=new Handler() {
@Override
public void handleMessage(Message msg) {
ArrayList nums=new ArrayList();
if(msg.what==1){
int test=msg.getData().getInt("test");
outer:
for (int i=2;i<=test;i++){
for (int j=2;j<=Math.sqrt(i);j++){
if(i!=2&&i%j==0){
continue outer;
}
}
nums.add(i);
}
}
Message message=new Message();
Bundle bundle=new Bundle();
bundle.putIntegerArrayList("list",nums);
message.setData(bundle);
uihandler.sendMessage(message);
}
};
Looper.loop();
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Android 학습 기록 - Handler를 사용하여 스레드에서 데이터 전달시간이 촉박한 데다가 나도 약간의 의혹이 있어서 코드만 넣었다.MainActivity.class ThreadTest.class...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.