如何在android应用程序中运行倒计时?

如何在android应用程序中运行倒计时?,android,countdowntimer,Android,Countdowntimer,我正在尝试在我的应用程序中添加倒计时,我想在整个应用程序中运行计时器5分钟,而不暂停、取消和重新启动…我尝试了几段代码,但没有得到想要的输出 面临的问题: 当我尝试从MainActivity转换到Main2Activity时,效果很好,但是 如果Main2Activity转为MainActivity,计时器将重新启动 //MainActivity.java public class MainActivity extends AppCompatActivity { Button but

我正在尝试在我的应用程序中添加倒计时,我想在整个应用程序中运行计时器5分钟,而不暂停、取消和重新启动…我尝试了几段代码,但没有得到想要的输出

面临的问题: 当我尝试从MainActivity转换到Main2Activity时,效果很好,但是 如果Main2Activity转为MainActivity,计时器将重新启动

//MainActivity.java

public class MainActivity extends AppCompatActivity  {
    Button button;
    TextView textView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button= (Button) findViewById(R.id.button);
        textView= (TextView) findViewById(R.id.id1);
        new CountDownTimer(300000, 1000) { // adjust the milli seconds here

            public void onTick(long millisUntilFinished) {
                textView.setText(""+String.format("%d min, %d sec",
                        TimeUnit.MILLISECONDS.toMinutes( millisUntilFinished),
                        TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished) -
                                TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished))));
            }

            public void onFinish() {
                textView.setText("done!");
            }
        }.start();
        button.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v) {
                Intent in=new Intent(MainActivity.this,Main2Activity.class);
                startActivity(in);
            }
        });
    }
}

//Main2Activity.java

public class Main2Activity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);

        Button btn2= (Button) findViewById(R.id.button2);
        btn2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent i=new Intent(Main2Activity.this,MainActivity.class);
                startActivity(i);
            }
        });
    }
}


您的Main2活动正在启动MainActivity的新实例。如果要返回原始的MainActivity,请使用
finish()
而不是
startActivity()

您的Main2活动正在启动一个新的MainActivity实例。如果您想返回到原始的MainActivity,请使用
finish()
而不是
startActivity()

请提供代码OK..稍等片刻我想您可以使用application class创建这样的计时器,但计时器将限于ApplicationHok的生命周期…但是我如何访问UI(即文本视图中剩余的秒数)在应用程序类中??一个总是将结果保存到共享首选项的线程如何?请提供代码OK..稍等片刻我想您可以使用应用程序类创建这样的计时器,但计时器将限于ApplicationHok的生命周期…但我如何访问UI(即文本视图中剩余的秒数)在应用程序类中??一个总是将结果保存到共享首选项的线程如何。但我必须给出一个意图,而不是finish();。。。我不想完成您清单中的第二个活动,这两个活动的启动模式是什么?如果你想回到主活动,它应该是
singleTop
。你能告诉我一个活动的哪个方法在它的一个会话中被调用一次吗?即使我们打算多次调用这个活动!您的活动堆栈将如下所示:MainActivity(timer1)->Main2Activity->MainActivity(timer2)->Main2Activity->MainActivity(timer3)@acallan是对的,如果你想回到原来的计时器,你应该调用
finish()
。您还可以调查出于某种原因是否需要意图中的数据。但我必须给出意图,而不是finish();。。。我不想完成您清单中的第二个活动,这两个活动的启动模式是什么?如果你想回到主活动,它应该是
singleTop
。你能告诉我一个活动的哪个方法在它的一个会话中被调用一次吗?即使我们打算多次调用这个活动!您的活动堆栈将如下所示:MainActivity(timer1)->Main2Activity->MainActivity(timer2)->Main2Activity->MainActivity(timer3)@acallan是对的,如果你想回到原来的计时器,你应该调用
finish()
。您还可以调查出于某种原因是否需要意图中的数据。