您的位置:首页 > 移动开发 > Android开发

Android学习记录—利用Handler在线程中传递数据

2017-03-31 16:06 477 查看
时间紧迫,加上我也有一点疑惑,所以只放个代码。

MainActivity.class

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<Integer> nums=new ArrayList<Integer>();
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();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: