如果我回到 activity,如何重新开始倒计时?
How to restart count down timer if I come back to activity?
我有一个入口布局,需要看3秒。如果我启动该应用程序,它会停留 3 秒并且 activity
发生变化,这没关系,但问题是,如果我在使用该应用程序 avtivity
时通过智能手机的后按返回到此 activity
3秒后不变。我是新手,找不到问题?请你帮助我好吗 ?谢谢
public class A1CoverPage extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.a1cover_page);
getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
getSupportActionBar().setCustomView(R.layout.a0action_bar);
new CountDownTimer(3000, 1000) {
public void onTick(long millisUntilFinished) {
EditText mTextField = (EditText) findViewById(R.id.editText);
mTextField.setText(" Loading... ");
ImageView mImageView = (ImageView) findViewById(R.id.imageView);
mImageView.setImageResource(R.drawable.amblem);
}
public void onFinish() {
Intent intent = new Intent(A1CoverPage.this, A2ExperimentCalibration.class);
startActivity(intent);
}
}.start();
}
onCreate
只会第一次执行,当您的 activity 创建时,但是当您返回此 activity 时,onCreate
将不会再次执行.
so override
onstart
Activity
中的方法并将您的代码移动到 onstart
中
EditText mTextField;
ImageView mImageView;
// ^^^^ declare views references
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.a1cover_page);
getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
getSupportActionBar().setCustomView(R.layout.a0action_bar);
mTextField = (EditText) findViewById(R.id.editText);
mImageView = (ImageView) findViewById(R.id.imageView);
// ^^^ initialize views
}
@Override
protected void onStart() {
super.onStart();
new CountDownTimer(3000, 1000) {
public void onTick(long millisUntilFinished) {
mTextField.setText(" Loading... ");
mImageView.setImageResource(R.drawable.amblem);
}
public void onFinish() {
Intent intent = new Intent(A1CoverPage.this, A2ExperimentCalibration.class);
startActivity(intent);
}
}.start();
}
改进: 在 class 中声明您的视图并在 onCreate
中初始化它们,而不是每次都在您的计时器匿名中将它们内部化 class
移动您的 CountDownTimer
和 onStart()
方法,类似于:
@Override
public void onStart() {
super.onStart();
new CountDownTimer(3000, 1000) {
public void onTick(long millisUntilFinished) {
EditText mTextField = (EditText) findViewById(R.id.editText);
mTextField.setText(" Loading... ");
ImageView mImageView = (ImageView) findViewById(R.id.imageView);
mImageView.setImageResource(R.drawable.amblem);
}
public void onFinish() {
Intent intent = new Intent(A1CoverPage.this, A2ExperimentCalibration.class);
startActivity(intent);
}
}.start();
}
我有一个入口布局,需要看3秒。如果我启动该应用程序,它会停留 3 秒并且 activity
发生变化,这没关系,但问题是,如果我在使用该应用程序 avtivity
时通过智能手机的后按返回到此 activity
3秒后不变。我是新手,找不到问题?请你帮助我好吗 ?谢谢
public class A1CoverPage extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.a1cover_page);
getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
getSupportActionBar().setCustomView(R.layout.a0action_bar);
new CountDownTimer(3000, 1000) {
public void onTick(long millisUntilFinished) {
EditText mTextField = (EditText) findViewById(R.id.editText);
mTextField.setText(" Loading... ");
ImageView mImageView = (ImageView) findViewById(R.id.imageView);
mImageView.setImageResource(R.drawable.amblem);
}
public void onFinish() {
Intent intent = new Intent(A1CoverPage.this, A2ExperimentCalibration.class);
startActivity(intent);
}
}.start();
}
onCreate
只会第一次执行,当您的 activity 创建时,但是当您返回此 activity 时,onCreate
将不会再次执行.
so override
onstart
Activity
中的方法并将您的代码移动到 onstart
EditText mTextField;
ImageView mImageView;
// ^^^^ declare views references
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.a1cover_page);
getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
getSupportActionBar().setCustomView(R.layout.a0action_bar);
mTextField = (EditText) findViewById(R.id.editText);
mImageView = (ImageView) findViewById(R.id.imageView);
// ^^^ initialize views
}
@Override
protected void onStart() {
super.onStart();
new CountDownTimer(3000, 1000) {
public void onTick(long millisUntilFinished) {
mTextField.setText(" Loading... ");
mImageView.setImageResource(R.drawable.amblem);
}
public void onFinish() {
Intent intent = new Intent(A1CoverPage.this, A2ExperimentCalibration.class);
startActivity(intent);
}
}.start();
}
改进: 在 class 中声明您的视图并在 onCreate
中初始化它们,而不是每次都在您的计时器匿名中将它们内部化 class
移动您的 CountDownTimer
和 onStart()
方法,类似于:
@Override
public void onStart() {
super.onStart();
new CountDownTimer(3000, 1000) {
public void onTick(long millisUntilFinished) {
EditText mTextField = (EditText) findViewById(R.id.editText);
mTextField.setText(" Loading... ");
ImageView mImageView = (ImageView) findViewById(R.id.imageView);
mImageView.setImageResource(R.drawable.amblem);
}
public void onFinish() {
Intent intent = new Intent(A1CoverPage.this, A2ExperimentCalibration.class);
startActivity(intent);
}
}.start();
}