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

android thread

2016-07-02 17:00 363 查看
本周在开发安卓采样过程中,学习了一下java的线程知识,java线程用到如下几个类和接口,

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

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

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

附上主要代码:

// 处理采样线程的类
static Handler handleSampleThreadHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
}
};
// 开线程
Thread threadSample = new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
myApp.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++;
}

// 休眠100ms
try {
Thread.sleep(100);
} catch (Exception e) {
// TODO: handle exception
}
}
}
});
threadSample.start();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: