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

Android handler异步处理简单例子

2015-11-12 16:17 627 查看
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(){@Overridepublic void handleMessage(Message msg) {if (msg.what==0x1234){ArrayList<Integer> nums=msg.getData().getIntegerArrayList(TV_NUM);if (nums!=null) {tv_allPrime.setText(nums.toString());}}}};@Overrideprotected 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;@Overridepublic void run() {//获取新的looperLooper.prepare();mhandler = new Handler() {@Overridepublic 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);}}};//启动loopLooper.loop();}}}
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"><Buttonandroid:id="@+id/bt_getPrime"android:layout_width="wrap_content"android:layout_height="wrap_content"android:onClick="cal"android:text="@string/activity_getPrime_btn_getPrime"android:layout_alignParentRight="true" /><EditTextandroid:id="@+id/edit_prime"android:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_toLeftOf="@+id/bt_getPrime"android:layout_alignBottom="@+id/bt_getPrime"/><!--显示所有质数--><TextViewandroid:id="@+id/tv_allPrime"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@+id/edit_prime"android:layout_centerInParent="true" /></RelativeLayout>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: