android thread

来源:互联网 发布:剑灵金币怎么买在淘宝 编辑:程序博客网 时间:2024/05/22 11:43

本周在开发安卓采样过程中,学习了一下java的线程知识,java线程用到如下几个类和接口,

Thread,Runnable,如果要开线程,只要实现Runnable接口run()就可以了,最后Thread.start(),

但是在线程过程中,逻辑层和显示层的交互不能直接在线程中进行,需要类似发消息到外面执行,

用到如下两个类Handler,Message,Handler.sendMessage(),

附上主要代码:

    // 处理采样线程的类    static Handler handleSampleThreadHandler = new Handler() {@Overridepublic void handleMessage(Message msg) {// TODO Auto-generated method stubsuper.handleMessage(msg);}    };

// 开线程Thread threadSample = new Thread(new Runnable() {@Overridepublic void run() {// TODO Auto-generated method stubmyApp.samplingBoolean = true;// 每秒点数int nSecondPointCountInteger = myApp.nSecondPointCountInteger;// 每屏点数int nScreenShowPointInteger = myApp.nScreenShowPointInteger;// 每次取点个数int nPetGetPointCountInteger = nSecondPointCountInteger / 10;// 信号频率double dbSignalFrequencyDouble = 0.5;// 采样频率double dbSampleFrequencyDouble = myApp.dbSampleFrequencyDouble;while (myApp.samplingBoolean) {Message messageSampleMessage = new Message();messageSampleMessage.what = 1;handleSampleThreadHandler.sendMessage(messageSampleMessage);Integer nYuInteger = myApp.numberInteger % nScreenShowPointInteger;for (int i = 0; i < nPetGetPointCountInteger; i++) {double xValueDouble = myApp.numberInteger / dbSampleFrequencyDouble;myApp.ch1ValueArrayDoubles[nYuInteger + i] = 800 * Math.sin(2 * Math.PI * dbSignalFrequencyDouble * xValueDouble);myApp.numberInteger++;}// 休眠100mstry {Thread.sleep(100);} catch (Exception e) {// TODO: handle exception}}}});threadSample.start();


0 0
原创粉丝点击