TMA*_*A-1 2 java android timer onresume
我使用a Timer来不断更新a TextView,但我在onResume()方法期间无法重新启动计时器.我timer.cancel()在onPause()和onDestroy()方法中使用,但如何重新启动计时器onResume()?
这是我的计时器代码......
int delay = 1000;
int period = 1000;
Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
public void run() {
//I update the TextView here
}
}, delay, period);
Run Code Online (Sandbox Code Playgroud)
更容易的选择是使用Handler该类.我不推荐使用Timer类,因为它与Activity的生命周期没有关系,你必须自己担心任何潜在的线程问题.使用Handler的好处是你的所有回调都将在主线程上(因此不需要担心线程问题).以下是如何执行此操作的简单示例.
@Override
protected void onCreate(Bundle savedInstanceState)
{
....
mHandler = new Handler();
}
@Override
protected void onResume()
{
mHandler.postDelayed(myRunnable, UPDATE_RATE);
}
@Override
protected void onPause()
{
mHandler.removeCallbacks(myRunnable);
}
private final Runnable myRunnable= new Runnable() {
@Override
public void run()
{
//Do task
mHandler.postDelayed(myRunnable, UPDATE_RATE);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2702 次 |
| 最近记录: |