如何创建心跳助手,然后在Android中调用错误页面

时间:2014-01-12 22:38:09

标签: android android-intent timer

编辑:添加了无效的AlarmManager代码

我有一个基于GPS的应用程序,每秒都会在GPS事件上运行。每个活动都实现了LocationListener,每个位置监听器都调用一个辅助类来执行一堆东西(每秒一次)。如果超过1秒没有GPS事件(比如说5秒),我希望屏幕变红。这是一些伪代码:

以下是辅助类

中的函数
static long heartBeatTimer;

static public void filter(speed){
     //this routine is called once a second unless error   
    ....
    heartBeatTimer = System.nanoTime();
    ....
}

static public void heartBeat(){
    //This routine gets called on app launch and runs forever
    While (day != night){
        if (System.nanoTime() - heartBeatTimer > 5000000000) {
            // This is incorrect, I want to go to an ErrorActivity.  Doesn't work
            // Can this be done from a helper class????
            Intent target = new Intent(this, ErrorActivity.class);
            startActivity(target);
        }
    }
}

这里真的有两个问题。我的heartBeat活动将全部消耗资源,因此必须有更好的方法来做到这一点。其次,一旦heartBeat超时,我怎么能去我的错误活动。

我没有尝试甚至开始工作。

我尝试过使用AlarmManager但是这段代码编译但崩溃时出现空指针异常。

PendingIntent p = setScreenRed();
p.cancel();//or p.cancel();, i am not sure
AlarmManager am=(AlarmManager)getApplicationContext().getSystemService(Context.ALARM_SERVICE);
am.set(AlarmManager.RTC, System.currentTimeMillis() + 5000, p);

1 个答案:

答案 0 :(得分:0)

您如何看待这个伪代码:

if(GPS == true){
    doGSPstuff();
    PendingIntent p = setScreenRed();
    alarmManager.cancel(p);//or p.cancel();, i am not sure
    alarmManager.set(5000, p);
}

基本上它(重新)每次获得gps时都会设置alarmManager。 如果没有gps,它将不会重置alarmManager,它将在5秒后运行。