Android:Timer的问题

时间:2016-03-10 09:31:12

标签: java android timer

我有这样的代码:

public class MainActivity extends AppCompatActivity {
    private Button StartButton;
    private Button StopButton;
    private Timer timer;

    protected void onCreate(Bundle savedInstanceState) {
    //some code
    StartButton.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            //some code
            timer = new Timer();
            timer.schedule(task, 0, interval);
            timer.start();
        }
    });

    StopButton.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            //some code
            timer.cancel();
            timer = null;
        }
    });
    }
}

问题是当调用onDestroy()时,定时器线程继续工作,但是定时器对象的链接丢失了,所以我不能再控制它了。我该如何保留链接?

2 个答案:

答案 0 :(得分:1)

在onDestroy中停止计时器。请尝试下面的代码。

@Override
public void onDestroy() {
    if(timer != null) {
        timer.cancel();
        timer.purge();
        timer = null;
    }
    super.onDestroy();
}

答案 1 :(得分:1)

如果在Activity被销毁之后需要Timer才能工作,那么就不应该将Timer与Activity生命周期联系起来。使用Service来控制定时器,因为您的目的是在Activity被破坏后保持定时器工作/运行。 Services旨在用于此目的。