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>
相关文章推荐
- Android异步消息处理机制完全解析(源码角度)
- android:theme
- LinearGradient
- 那些年,我们在Android机型适配上遇到的坑丨之Camera拍照时快门咔嚓声
- android 教你怎么把图片变成灰色
- Android Studio创建项目
- Android自定义View的实现方法,深入了解View(四)
- Android studio获取证书指纹 (SHA1)的方法
- 日期选择器 - Android自定义DataTimePicker以及日期范围限制
- Android性能优化-----单一Activity框架
- Android中的Broadcast Action大全
- Android中Service类onStartC…
- Android那些事儿
- Android本地文件异步加载方式的实…
- android gravity用法,我老是记不…
- AES在Android、JAVA端正常加密解密
- Shader画笔填充
- Android视图状态及重绘流程分析,深入了解View(三)
- Android Fragment 生命周期图
- android中普通的java对象转换成 json格式的字符串