如果我回到活动,如何重新启动倒数计时器



我有一个入口布局,需要看3秒钟。如果我启动应用程序,它会保持 3 秒并且activity发生变化,没关系,但问题是,如果我在使用应用程序时通过智能手机的反向按下回到这个activity avtivity 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只会在创建活动时第一次执行,但是当您回到此活动时,onCreate将不会再次执行。

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

改进:在类中声明您的视图并在onCreate中初始化它们,而不是每次在计时器匿名类中内化它们

onStart()方法

中移动CountDownTimer类似于以下内容:

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

最新更新