Android计时器永远不会执行

时间:2014-05-21 11:01:00

标签: android timer

我使用requestLocationUpdates在我的应用中获取当前位置,但如果检测时间太长,我会使用计时器取消操作。

为了您的信息,我告诉您,我在WakefulBroadcastReceiver中执行了所有这些过程,因此设备在收到位置或超时之前不应该睡觉。一旦发生其中一个,我就会致电completeWakefulIntent让设备再次入睡。

一切都很好但有时计时器永远不会完成,也没有位置。我想我的过程可能会被系统杀死或破坏。

那么,有没有办法确保计时器在一段时间后执行?

任何帮助将不胜感激

3 个答案:

答案 0 :(得分:0)

检查AlarmManager

触发位置查找活动后,安排非重复警报。 在适当的时间之后,此警报反过来触发取消定位活动的杀手活动

或者使用Handler。类似的东西:

Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
 public void run() {
     // do something
     // this executes after 2000 milliseconds
   }
}, 2000);

答案 1 :(得分:0)

当它在主线程上运行时,你永远不应该在其中执行长时间运行的操作(在考虑阻塞接收器和被杀死的候选者之前,系统允许超时10秒。)

此外,如果此BroadcastReceiver是通过<receiver>标记启动的,则从onReceive()返回后该对象不再存在。这意味着您不应该执行任何异步返回结果的操作。

请参阅BroadcastReceiver

的文档

干杯!

答案 2 :(得分:-1)

使用Timer

Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {

    @Override
    public void run() {
        // TODO Auto-generated method stub
        //This will execute afteer every 1 Minute
    }
}, 0, 60000);