我正在编写一个应用程序,将发送短信时,设定的时间结束了。当我改变手机的方向或暂时离开此活动时,计时器仍在计时,但停止按钮不起作用,并且开始按钮可见。我不知道如何保存设置;我知道我必须使用 onSaveInstanceState
但我不知道该放什么进去。
代码:
public void startThread(View view) {
stopThread = false;
sum = sec + mins;
if (sum == 0) {
Toast.makeText(Background.this, "Please enter a positive number", Toast.LENGTH_SHORT).show();
return;
}
ExampleRunnable runnable = new ExampleRunnable(sum);
new Thread(runnable).start();
btnStartThread.setEnabled(false);
}
public void stopThread(View view) {
stopThread = true;
btnStartThread.setEnabled(true);
}
class ExampleRunnable implements Runnable {
int seconds;
ExampleRunnable(int seconds) {
this.seconds = seconds;
}
@Override
public void run() {
for (; ; ) {
for (int i = 0; i < seconds; i++) {
if (stopThread) {
return;
}
if (i == sum-1) {
runOnUiThread(new Runnable() {
@Override
public void run() {
if(check_sms.isChecked() && edit_phone_number.length() > 0) {
sendSMS();
}
}
});
}
Log.d(TAG, "startThread: " + i);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
1条答案
按热度按时间jw5wzhpr1#
我会坚持像“黑斯廷默斯开始”这样的旗帜,并设置它
true/false
根据计时器是否已启动,如果计时器确实已启动,我将保存一些其他标志,如“timerstartedepoch”(时间已启动时的历元数)、“timertimeoutms”(超时ms)。这样,无论何时离开活动并返回活动,都可以加载标志并基于它们更新状态。