Android:每秒更新 int
Posted
技术标签:
【中文标题】Android:每秒更新 int【英文标题】:Android: Updating int ever second 【发布时间】: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 毫秒的处理程序来调用你的函数来更新分数并写入你的文件 你能给出一个代码示例吗? 【参考方案1】:我认为您应该为此使用 sqlite 表。 Greendao 是管理这些表的好工具。您可以每秒将信息保存到表格中。游戏结束后,您将获得游戏每一秒的完整得分列表。 在您的代码示例中,每次编写新行之前,“第二个”变量都设置为 0。我认为这就是问题所在。
【讨论】:
【参考方案2】:使用 TimerTask 或 Handler 和 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,那是其他程序过程的某种副作用。 是的,秒只是保持为零? 必须是其他代码的某种副作用。上面的代码没有将秒设置为零。以上是关于Android:每秒更新 int的主要内容,如果未能解决你的问题,请参考以下文章
在我的 webview 应用程序上调用虚拟方法 'int android.graphics.Bitmap.getWidth()' on an null object reference"
错误 - 尝试在空对象引用上调用虚拟方法“int android.graphics.Bitmap.getHeight()”
Android ViewGroup 崩溃:尝试从空对象引用上的字段“int android.view.View.mViewFlags”读取
java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“int android.view.View.getImportantForAccessibility()”
java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“int android.view.View.getBottom()”