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

来源:互联网 发布:三星平板下载软件 编辑:程序博客网 时间:2024/06/03 15:19

时间紧迫,加上我也有一点疑惑,所以只放个代码。
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();    }}
0 0
原创粉丝点击