Android:每秒钟更新一次



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

我想显示游戏中每秒的得分。

如何确保我的int for seconds从0开始更新

输出示例:

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++;

我认为您应该使用sqlite表。Greendao是管理这些表的好工具。您可以每秒钟将信息保存到一个表中。当游戏结束时,你会看到游戏中每一秒的完整得分列表。在代码示例中,"second"变量在每次编写新行之前都被设置为0。我想这就是问题所在。

使用TimerTask或Handler与postDelayed()方法可以做到这一点。

你可以使用一个处理器每秒钟更新一次你的文本文件:

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

最新更新