【问题标题】:Activity keeps running?活动继续运行?
【发布时间】:2014-10-24 23:13:18
【问题描述】:

嘿,我的程序遇到了问题。我想要一个包含计时器中的计时器和退出按钮的布局。我已经成功完成了计时器,但我认为问题在于我的退出按钮编码。

这是我的代码:

package com.MyCompany.MyApp;

import android.app.Activity;
import android.content.Intent;
import android.content.Context;
import android.os.CountDownTimer;
import android.os.Handler;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import android.view.View.OnClickListener;
import android.widget.Button;
import com.MyCompany.MyApp.R;


public class Class1 extends Activity implements OnClickListener
    {
    Button btn_exit;
    Intent i = new Intent(this, Class2.class);
    Handler handler;
    protected Context context = this;
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        handler = new Handler();
        setContentView(R.layout.activity_class1);


        btn_exit = (Button)findViewById(R.id.btn_exit);
        btn_exit.setOnClickListener(this);

        final TextView text4 = (TextView) findViewById(R.id.timer);

        btn_exit.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {


                    finish();


        }
        });

        new CountDownTimer(45000, 1000) {

             public void onTick(long millisUntilFinished) {
                 text4.setText("Seconds remaining: " + millisUntilFinished / 1000);
             }

             public void onFinish() {
                 text4.setText("Time's up!");

                 new CountDownTimer(3000, 1000) {

                     public void onTick(long millisUntilFinished) {

                     }
                     @Override
                     public void onFinish() {


                         Intent intent1 = new Intent(context, Class2.class);
                           startActivity(intent1);}

                  }.start();

             }
          }.start();

    }

    @Override
    public void onClick(View v) {


        }
    }

当我运行应用程序并观察计时器一直降至零时,第二个计时器启动并从三开始倒计时,正如它应该的那样,然后程序完成当前活动并切换到下一个活动。这一切都很好,但是假设我运行应用程序,观察计时器下降,但在任何时候决定我想点击退出按钮,即使它退出屏幕并完成活动,计时器仍然会进入倒计时并且切换到 Class2。我怎样才能阻止它这样做?

【问题讨论】:

  • activities 有生命周期,即 onPause() 和 onStop(),现在停止是当 Activity 即将被终止时 onpause 是当它移动到后台而不显示在屏幕上时......所以您所做的就是在调用 onPause() 或 onStop() 时检查计时器是否仍在倒计时,然后将其杀死,简单..听起来合法吗?试试看..让我知道
  • 唯一的事情是我需要从 Class1 中的 textview 获取一些信息,因此当计时器用完或按下退出按钮时,我无法完全销毁它。如果计时器用完,它可能需要暂停,但如果用户按下退出,那么是的,它会杀死一切,同时停止计时器。

标签: android timer activity-finish


【解决方案1】:

您可以做的是创建一个全局布尔变量,例如“ThisActivityExits”,在您的点击监听器上更改该变量的值,然后您可以在 Timer 中创建和“if”来停止它。

【讨论】:

  • 我试过这样的 btn_exit.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { global1 = false; if(global1 == false) finish();} }); if(global1 == true){ new CountDownTimer(45000, 1000) { public void onTick(long millisUntilFinished) { text4.setText("剩余秒数:" + millisUntilFinished / 1000);}
  • public void onFinish() { text4.setText("时间到了!"); new CountDownTimer(3000, 1000) { public void onTick(long millisUntilFinished) {} @Override public void onFinish() { Intent intent1 = new Intent(context, Class2.class); startActivity(intent1);}}.start();}}.start();} 否则完成();在我的项目顶部附近声明它之后 public static boolean global1 = true;
  • 嘿,我想通了,实际上并没有像你说的那样把 if 语句放在计时器中。非常感谢。
  • 很高兴看到它对您有所帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-08
相关资源
最近更新 更多