如果我回到 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

移动您的 CountDownTimeronStart() 方法,类似于:

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