阅读背景:

Android handler异步处理简单例子

来源:互联网 

public class HandlerActivity extends BaseActivity {    private static final String UPPER_NUM = "upper";    private static final String TV_NUM = "tvnum";    private EditText edit_prime;    private CalThread calThread;    private TextView tv_allPrime;    Handler handler=new Handler(){        @Override        public void handleMessage(Message msg) {            if (msg.what==0x1234){                ArrayList<Integer> nums=msg.getData().getIntegerArrayList(TV_NUM);                if (nums!=null) {                    tv_allPrime.setText(nums.toString());                }            }        }    };    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_getprime);        initViews();    }    private void initViews() {        edit_prime = (EditText) findViewById(R.id.edit_prime);        tv_allPrime= (TextView) findViewById(R.id.tv_allPrime);        calThread=new CalThread();        calThread.start();    }    /**      为按钮点击事件提供事件处理函数     */    public void cal(View view) {        //创建消息        Message message=new Message();        message.what=0x123;        Bundle bundle=new Bundle();        bundle.putInt(UPPER_NUM,Integer.parseInt(edit_prime.getText().toString()));        message.setData(bundle);        calThread.mhandler.sendMessage(message);    }    class CalThread extends Thread {        public Handler mhandler;        @Override        public void run() {            //获取新的looper            Looper.prepare();            mhandler = new Handler() {                @Override                public void handleMessage(Message msg) {                    if (msg.what == 0x123) {                        int upper = msg.getData().getInt(UPPER_NUM);                        ArrayList<Integer> nums = new ArrayList<>();                        //从2开始计算到upper的所有质数                        outer:                        for (int i = 2; i < upper; i++) {                            //从2开始除,到i的平方根为止                            for (int j = 2; j <=Math.sqrt(i); j++) {                                //如果可以整除,则表明不是质数,跳出j这个循环                                if (i != 2 && i % j == 0) {                                    continue outer;                                }                            }                            nums.add(i);                        }                        ToastUtil.showLong(HandlerActivity.this,nums.toString());                        Message message=new Message();                        message.what=0x1234;                        Bundle bundle=new Bundle();                        bundle.putIntegerArrayList(TV_NUM, nums);                        message.setData(bundle);                        handler.sendMessage(message);                    }                }            };            //启动loop            Looper.loop();        }    }}public class HandlerActivity extends BaseAct



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: