Android 安卓计时表onChronometerTick StackOverflower错误?
我正在用Android编写一个代码来开发一个计时器应用程序。但当我试图在某个时间重置计时器时,我遇到了一些错误 MyCode:Android 安卓计时表onChronometerTick StackOverflower错误?,android,time,stack-overflow,chronometer,Android,Time,Stack Overflow,Chronometer,我正在用Android编写一个代码来开发一个计时器应用程序。但当我试图在某个时间重置计时器时,我遇到了一些错误 MyCode: mChronometer.setBase(SystemClock.elapsedRealtime() - 86396000); mChronometer.start(); mChronometer.setOnChronometerTickListener(new Chronometer.OnChronometerTickLis
mChronometer.setBase(SystemClock.elapsedRealtime() - 86396000);
mChronometer.start();
mChronometer.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener()
{
@Override
public void onChronometerTick(Chronometer chronometer)
{
long myElapsedMillis = SystemClock.elapsedRealtime() - chronometer.getBase();
if(myElapsedMillis>=86400000)
{
chronometer.stop();
chronometer.setBase(0);
chronometer.start();
}
}
} );
08-18 02:30:16.793: E/AndroidRuntime(23075): FATAL EXCEPTION: main
08-18 02:30:16.793: E/AndroidRuntime(23075): java.lang.StackOverflowError
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.graphics.Paint.getTextRunAdvances(Paint.java:1845)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.graphics.Paint.getTextRunAdvances(Paint.java:1818)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.text.TextLine.handleText(TextLine.java:755)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.text.TextLine.handleRun(TextLine.java:907)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.text.TextLine.measureRun(TextLine.java:414)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.text.TextLine.measure(TextLine.java:293)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.text.TextLine.metrics(TextLine.java:267)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.text.BoringLayout.isBoring(BoringLayout.java:308)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.widget.TextView.makeSingleLayout(TextView.java:6025)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.widget.TextView.makeNewLayout(TextView.java:5917)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.widget.TextView.checkForRelayout(TextView.java:6501)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.widget.TextView.setText(TextView.java:3729)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.widget.TextView.setText(TextView.java:3587)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.widget.TextView.setText(TextView.java:3562)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.widget.Chronometer.updateText(Chronometer.java:250)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.widget.Chronometer.updateRunning(Chronometer.java:257)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.widget.Chronometer.start(Chronometer.java:188)
08-18 02:30:16.793: E/AndroidRuntime(23075): at com.example.androidchronometer.MainActivity$1.onChronometerTick(MainActivity.java:46)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.widget.Chronometer.dispatchChronometerTick(Chronometer.java:279)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.widget.Chronometer.updateRunning(Chronometer.java:258)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.widget.Chronometer.start(Chronometer.java:188)
08-18 02:30:16.793: E/AndroidRuntime(23075): at com.example.androidchronometer.MainActivity$1.onChronometerTick(MainActivity.java:46)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.widget.Chronometer.dispatchChronometerTick(Chronometer.java:279)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.widget.Chronometer.updateRunning(Chronometer.java:258)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.widget.Chronometer.start(Chronometer.java:188)
08-18 02:30:16.793: E/AndroidRuntime(23075): at com.example.androidchronometer.MainActivity$1.onChronometerTick(MainActivity.java:46)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.widget.Chronometer.dispatchChronometerTick(Chronometer.java:279)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.widget.Chronometer.updateRunning(Chronometer.java:258)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.widget.Chronometer.start(Chronometer.java:188)
08-18 02:30:16.793: E/AndroidRuntime(23075): at com.example.androidchronometer.MainActivity$1.onChronometerTick(MainActivity.java:46)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.widget.Chronometer.dispatchChronometerTick(Chronometer.java:279)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.widget.Chronometer.updateRunning(Chronometer.java:258)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.widget.Chronometer.start(Chronometer.java:188)
08-18 02:30:16.793: E/AndroidRuntime(23075): at com.example.androidchronometer.MainActivity$1.onChronometerTick(MainActivity.java:46)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.widget.Chronometer.dispatchChronometerTick(Chronometer.java:279)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.widget.Chronometer.updateRunning(Chronometer.java:258)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.widget.Chronometer.start(Chronometer.java:188)
08-18 02:30:16.793: E/AndroidRuntime(23075): at com.example.androidchronometer.MainActivity$1.onChronometerTick(MainActivity.java:46)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.widget.Chronometer.dispatchChronometerTick(Chronometer.java:279)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.widget.Chronometer.updateRunning(Chronometer.java:258)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.widget.Chronometer.start(Chronometer.java:188)
08-18 02:30:16.793: E/AndroidRuntime(23075): at com.example.androidchronometer.MainActivity$1.onChronometerTick(MainActivity.java:46)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.widget.Chronometer.dispatchChronometerTick(Chronometer.java:279)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.widget.Chronometer.updateRunning(Chronometer.java:258)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.widget.Chronometer.start(Chronometer.java:188)
08-18 02:30:16.793: E/AndroidRuntime(23075): at com.example.androidchronometer.MainActivity$1.onChronometerTick(MainActivity.java:46)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.widget.Chronometer.dispatchChronometerTick(Chronometer.java:279)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.widget.Chronometer.updateRunning(Chronometer.java:258)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.widget.Chronometer.start(Chronometer.java:188)
08-18 02:30:16.793: E/AndroidRuntime(23075): at com.example.androidchronometer.MainActivity$1.onChronometerTick(MainActivity.java:46)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.widget.Chronometer.dispatchChronometerTick(Chronometer.java:279)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.widget.Chronometer.updateRunning(Chronometer.java:258)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.widget.Chronometer.start(Chronometer.java:188)
08-18 02:30:16.793: E/AndroidRuntime(23075): at com.example.androidchronometer.MainActivity$1.onChronometerTick(MainActivity.java:46)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.widget.Chronometer.dispatchChronometerTick(Chronometer.java:279)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.widget.Chronometer.updateRunning(Chronometer.java:258)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.widget.Chronometer.start(Chronometer.java:188)
08-18 02:30:16.793: E/AndroidRuntime(23075): at com.example.androidchronometer.MainActivity$1.onChronometerTick
错误:
mChronometer.setBase(SystemClock.elapsedRealtime() - 86396000);
mChronometer.start();
mChronometer.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener()
{
@Override
public void onChronometerTick(Chronometer chronometer)
{
long myElapsedMillis = SystemClock.elapsedRealtime() - chronometer.getBase();
if(myElapsedMillis>=86400000)
{
chronometer.stop();
chronometer.setBase(0);
chronometer.start();
}
}
} );
08-18 02:30:16.793: E/AndroidRuntime(23075): FATAL EXCEPTION: main
08-18 02:30:16.793: E/AndroidRuntime(23075): java.lang.StackOverflowError
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.graphics.Paint.getTextRunAdvances(Paint.java:1845)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.graphics.Paint.getTextRunAdvances(Paint.java:1818)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.text.TextLine.handleText(TextLine.java:755)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.text.TextLine.handleRun(TextLine.java:907)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.text.TextLine.measureRun(TextLine.java:414)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.text.TextLine.measure(TextLine.java:293)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.text.TextLine.metrics(TextLine.java:267)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.text.BoringLayout.isBoring(BoringLayout.java:308)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.widget.TextView.makeSingleLayout(TextView.java:6025)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.widget.TextView.makeNewLayout(TextView.java:5917)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.widget.TextView.checkForRelayout(TextView.java:6501)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.widget.TextView.setText(TextView.java:3729)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.widget.TextView.setText(TextView.java:3587)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.widget.TextView.setText(TextView.java:3562)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.widget.Chronometer.updateText(Chronometer.java:250)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.widget.Chronometer.updateRunning(Chronometer.java:257)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.widget.Chronometer.start(Chronometer.java:188)
08-18 02:30:16.793: E/AndroidRuntime(23075): at com.example.androidchronometer.MainActivity$1.onChronometerTick(MainActivity.java:46)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.widget.Chronometer.dispatchChronometerTick(Chronometer.java:279)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.widget.Chronometer.updateRunning(Chronometer.java:258)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.widget.Chronometer.start(Chronometer.java:188)
08-18 02:30:16.793: E/AndroidRuntime(23075): at com.example.androidchronometer.MainActivity$1.onChronometerTick(MainActivity.java:46)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.widget.Chronometer.dispatchChronometerTick(Chronometer.java:279)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.widget.Chronometer.updateRunning(Chronometer.java:258)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.widget.Chronometer.start(Chronometer.java:188)
08-18 02:30:16.793: E/AndroidRuntime(23075): at com.example.androidchronometer.MainActivity$1.onChronometerTick(MainActivity.java:46)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.widget.Chronometer.dispatchChronometerTick(Chronometer.java:279)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.widget.Chronometer.updateRunning(Chronometer.java:258)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.widget.Chronometer.start(Chronometer.java:188)
08-18 02:30:16.793: E/AndroidRuntime(23075): at com.example.androidchronometer.MainActivity$1.onChronometerTick(MainActivity.java:46)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.widget.Chronometer.dispatchChronometerTick(Chronometer.java:279)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.widget.Chronometer.updateRunning(Chronometer.java:258)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.widget.Chronometer.start(Chronometer.java:188)
08-18 02:30:16.793: E/AndroidRuntime(23075): at com.example.androidchronometer.MainActivity$1.onChronometerTick(MainActivity.java:46)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.widget.Chronometer.dispatchChronometerTick(Chronometer.java:279)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.widget.Chronometer.updateRunning(Chronometer.java:258)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.widget.Chronometer.start(Chronometer.java:188)
08-18 02:30:16.793: E/AndroidRuntime(23075): at com.example.androidchronometer.MainActivity$1.onChronometerTick(MainActivity.java:46)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.widget.Chronometer.dispatchChronometerTick(Chronometer.java:279)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.widget.Chronometer.updateRunning(Chronometer.java:258)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.widget.Chronometer.start(Chronometer.java:188)
08-18 02:30:16.793: E/AndroidRuntime(23075): at com.example.androidchronometer.MainActivity$1.onChronometerTick(MainActivity.java:46)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.widget.Chronometer.dispatchChronometerTick(Chronometer.java:279)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.widget.Chronometer.updateRunning(Chronometer.java:258)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.widget.Chronometer.start(Chronometer.java:188)
08-18 02:30:16.793: E/AndroidRuntime(23075): at com.example.androidchronometer.MainActivity$1.onChronometerTick(MainActivity.java:46)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.widget.Chronometer.dispatchChronometerTick(Chronometer.java:279)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.widget.Chronometer.updateRunning(Chronometer.java:258)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.widget.Chronometer.start(Chronometer.java:188)
08-18 02:30:16.793: E/AndroidRuntime(23075): at com.example.androidchronometer.MainActivity$1.onChronometerTick(MainActivity.java:46)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.widget.Chronometer.dispatchChronometerTick(Chronometer.java:279)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.widget.Chronometer.updateRunning(Chronometer.java:258)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.widget.Chronometer.start(Chronometer.java:188)
08-18 02:30:16.793: E/AndroidRuntime(23075): at com.example.androidchronometer.MainActivity$1.onChronometerTick(MainActivity.java:46)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.widget.Chronometer.dispatchChronometerTick(Chronometer.java:279)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.widget.Chronometer.updateRunning(Chronometer.java:258)
08-18 02:30:16.793: E/AndroidRuntime(23075): at android.widget.Chronometer.start(Chronometer.java:188)
08-18 02:30:16.793: E/AndroidRuntime(23075): at com.example.androidchronometer.MainActivity$1.onChronometerTick
当我试图在某个时间重置计时表时,我面对的是堆栈溢出错误
请让我知道,我如何才能摆脱这个错误,请建议我什么可能是这个问题的可能解决方案 将基数设置为
SystemClock.elapsedRealtime()
而不是0
:
public void onChronometerTick(Chronometer chronometer)
{
// ...
chronometer.setBase(SystemClock.elapsedRealtime());
chronometer.start();
// ...
}
+1表示“stackoverflow”错误。:)您是否尝试卸下
计时器.stop()
或同时使用计时器.stop()代码>和计时器.start()代码>?是的,但可能的解决方案是什么。。。。!!!是的,删除了,我只添加了计时器。后退(0),但仍然得到相同的错误…你的时间值对我来说没有意义。使用mChronometer.setBase(SystemClock.elapsedRealtime()-86396000)
您希望实现什么?类似地,SystemClock.elapsedRealtime()-chronometer.getBase()
会导致在onChronometerTick
中的if
子句在特定时间后的每个勾号中输入。