强制ToggleButton停止写入我的本地内存文件

时间:2016-01-31 04:29:41

标签: android performance android-fragments android-intent

我有一个变量 MyFinalPressure ,其中填充了来自传感器压力的传感器数据。如果 MyFinalPressure ==至4000(4000点或40秒),则停止写入本地存储。 但看起来当我调试代码时,它会触及布尔 MaxPoints 并且仍在编写。我想知道我的逻辑是否错误。

你能帮我解决一下吗?

  public Boolean Store = false;
  Boolean MaxPoints = false;

  if (activity.Store) {
     activity.writeToFile(MyFinalPressure);//MyFinalPressure is float of one dimension array or stream of array. 
  }
  if (MyFinalPressure==4000){  //this conditon, am trying to stop wrting to local memory. 
     activity.MaxPoints = true;
  }

FileOutputStream fileOutputStream;

 //method to write into local memory. 
public void writeToFile(final float MyFinalPressure) {
    Log.d(TAG, "writeToFile.");
    String finalData;
    finalData = String.valueOf(MyFinalPressure);


    try {
        // true here for 'append'
        fileOutputStream = new FileOutputStream(file, true);

        String Space = " ";
        byte[] convert = Space.getBytes();

        fileOutputStream.write(finalData.getBytes());

        fileOutputStream.write(convert);
        fileOutputStream.flush();
        fileOutputStream.close();

    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }


}

 //write to file.
    StartWriting = (ToggleButton) findViewById(R.id.startWriting);
    StartWriting.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (StartWriting.isChecked()) {
                Store = true;
                Toast.makeText(getApplicationContext(), "Data Starts writing into (Message.txt) file", Toast.LENGTH_LONG).show();
            } else {
                if (!StartWriting.isChecked()|| MaxPoints==true) {  //here - this is wrong logic to stop writing to my file.
                    Toast.makeText(getApplicationContext(), "Data Stored at myAppFile", Toast.LENGTH_SHORT).show();
                    String finalData1;
                    finalData1 = String.valueOf(fileOutputStream);
                    Log.i(TAG, "of_writes: " + finalData1);
                    //    Toast.makeText(getApplicationContext(), "Data_write_number:  " + finalData1.length(), Toast.LENGTH_SHORT).show();
                    Store = false;
                }
            }
        }
    });

1 个答案:

答案 0 :(得分:0)

刚拿出来!StartWriting.isChecked()

由于上面的if语句,StartWriting.isChecked()将始终为false。然后因为你正在检查"!StartWriting.isChecked()"它总是会进入声明。