Android,可运行的邮件排队错误

时间:2014-11-06 15:23:40

标签: java android multithreading bluetooth

我是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);
}

}

任何有关如何解决此问题的帮助表示赞赏。 非常感谢,

0 个答案:

没有答案
相关问题