【问题标题】:Android: Updating int ever secondAndroid:每秒更新 int
【发布时间】:2014-08-10 14:39:12
【问题描述】:

我正在创建一个包含与我的应用游戏相关的数据的文本文件。

我想在游戏中每秒显示分数。

如何确保从零开始更新我的 int 秒数

想要的输出示例:

Seconds      Score
0            3
1            9
2            16
3            20
.....etc

当前输出(秒始终为 0):

Seconds      Score
0            3
0            9
0            16
0            20
.....etc

当前代码:

int seconds=0;

                //creating header in the txt file Note: Blanked out as it is generating every second
                writeToFileEEGPower(order("Seconds")+order("highAlpha")+order("lowAlpha")+order("highBeta")+order("LowBeta")+
                        order("lowGamma")+order("midGamma")+order("Delta")+order("Theta")+ "\n");

                //creating the string to be written to file
                String line = order(seconds+"")+order(eegPower.highAlpha+"")+order(eegPower.lowAlpha+"")+order(eegPower.highBeta+"")+
                        order(eegPower.lowBeta+"")+order(eegPower.midGamma+"")+order(eegPower.delta+"")+order(eegPower.theta+"")+ "\n";

                //write the string to file
                writeToFileEEGPower(line);
                seconds++;

【问题讨论】:

  • 使用 1000 毫秒的处理程序来调用你的函数来更新分数并写入你的文件
  • 你能给出一个代码示例吗?

标签: android time seconds


【解决方案1】:

我认为您应该为此使用 sqlite 表。 Greendao 是管理这些表的好工具。您可以每秒将信息保存到表格中。游戏结束后,您将获得游戏每一秒的完整得分列表。 在您的代码示例中,每次编写新行之前,“第二个”变量都设置为 0。我认为这就是问题所在。

【讨论】:

    【解决方案2】:

    使用 TimerTaskHandler 和 postDelayed() 方法可以解决问题。

    【讨论】:

      【解决方案3】:

      您可以使用处理程序每​​秒更新您的文本文件:

      public class MyActivity extends Activity {
      
          private android.os.Handler mHandler = new android.os.Handler();
          private Runnable textFileLogger;
          private int seconds = 0;
      
          @Override
          protected void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              setContentView(R.layout.activity_my);
      
              //Create header for text file
              writeToFileEEGPower(order("Seconds") + order("highAlpha") + order("lowAlpha") + order("highBeta") + order("LowBeta") +
                      order("lowGamma") + order("midGamma") + order("Delta") + order("Theta") + "\n");
      
              textFileLogger = new Runnable() {
                  @Override
                  public void run() {
                      seconds++;
                      String line = order(seconds + "") + order(eegPower.highAlpha + "") + order(eegPower.lowAlpha + "") + order(eegPower.highBeta + "") +
                              order(eegPower.lowBeta + "") + order(eegPower.midGamma + "") + order(eegPower.delta + "") + order(eegPower.theta + "") + "\n";
                      //write the string to file
                      writeToFileEEGPower(line);
                      //Repeats the logging after 1 second
                      mHandler.postDelayed(this, 1000);
                  }
              };
      
              //Starts the logging after 1 second
              mHandler.postDelayed(textFileLogger, 1000);
          }
      
          @Override
          protected void onDestroy() {
              super.onDestroy();
              //To stop the logging:
              mHandler.removeCallbacks(textFileLogger);
          }
      }
      

      【讨论】:

      • 我不确定如何实现这一点,请给我一个示例以了解我的确切代码
      • 它没有按照我的意愿更新秒数
      • 秒数有什么作用?它应该像 1,2,3 一样将它们数起来,...如果它保持在 0,那是其他程序过程的某种副作用。
      • 是的,秒只是保持为零?
      • 必须是其他代码的某种副作用。上面的代码没有将秒设置为零。
      猜你喜欢
      • 2013-04-21
      • 1970-01-01
      • 1970-01-01
      • 2013-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-07
      • 2016-09-19
      相关资源
      最近更新 更多