我是android的初学者,试图在我的应用程序的onResume()方法中使用以下runnable绘制我的应用程序从蓝牙连接的传感器接收的实时信号。传感器发送200hz的高频信号,延迟5ms,我的主线程上有一个serialReceive方法接收蓝牙数据。我的graphview数据在此方法中更新,并且还包括将数据存储到SD卡的流写入器代码。现在我的问题是当我发送高频数据时,应用程序停止工作。当我试图在这个可运行的范围内找出问题,因为所有其他人都在工作。我试图在最后使用postDelayed方法(mHandler.postDelayed(mTimer1,5);)但它也没有工作。请注意,如果我使用20hz(50ms延迟)的低频率信号输入,runnable也可以工作。
mTimer1 = new Runnable() {
@Override
public void run() {
GraphViewData[] gvd = new GraphViewData[seriesX.size()];
seriesX.toArray(gvd);
Series.resetData(gvd);
mHandler.post(this);
}
};
mHandler.post(mTimer1);
仅供参考,这是我从
收到串行数据的方法@Override
public void onSerialReceived(String theString) {
ecgSensor = Double.parseDouble(theString);
seriesX.add(new GraphViewData(dataCount, ecgSensor));
textOut.add(new String(String.valueOf(dataCount) + " " + theString + lineSep));
printable = textOut.toString();
try {
if(!file.exists()){
file.createNewFile();
}
outputStream = new FileOutputStream(file);
OutputStreamWriter myWriter = new OutputStreamWriter(outputStream);
myWriter.append(printable);
myWriter.flush();
myWriter.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
dataCount++;
if (seriesX.size() > 250) {
seriesX.remove(0);
graphView.setViewPort(dataCount - 250, 250);
}
}
任何有关如何解决此问题的帮助表示赞赏。 非常感谢,