【发布时间】: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