我有这样的代码:
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()时,定时器线程继续工作,但是定时器对象的链接丢失了,所以我不能再控制它了。我该如何保留链接?
答案 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
旨在用于此目的。