Android - 让应用程序向服务器发送心跳

时间:2013-08-15 12:23:26

标签: java android http android-service

我需要实施常规heartbeat

heartbeat本身是对我的服务器的简单HTTP-GET调用。

只要我的应用程序处于打开状态,我就想发送它。当我关闭应用程序时,发送应该停止。

我读了一些关于ServicesAlarmManager的内容,但在浏览应用活动时如何调用/停止它们?

This also似乎不错,但问题仍然存在:

final Handler handler = new Handler();
Runnable runable = new Runnable() {

@Override
public void run() {
    try{
        //do your code here
        //also call the same runnable 
        handler.postDelayed(this, 1000);
    }
    catch (Exception e) {
        // TODO: handle exception
    }
    finally{
        //also call the same runnable 
        handler.postDelayed(this, 1000);
    }
}
};
handler.postDelayed(runable, 1000); 

任何人都可以发布一个好的例子或链接吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

  

只要我的应用程序处于打开状态,我就想发送它。当我关闭   发送应该停止的应用程序

在Android中比iOS更难,但让我们这样做: 在Android中,当应用程序进入后台或被杀时,您在应用程序级别没有回调。例如,您应该在每个Activity onStop方法处理。看一下Activity生命周期: enter image description here

或onDestroy方法。注意: 当一项活动不再可见时,可能是因为您的应用程序已进入后台,已关闭或其他活动可见。您必须确定哪种情况并使用您的HTTP Get / Post,或在需要时停止它。

Here是一个示例代码,其中包含通过HTTP发送数据的异步任务。

答案 1 :(得分:0)

我使用类似Handler的代码实现了一个简单的超时。当Activity调用onPause在10秒延迟时触发超时,当Activity调用onResume取消与removeRunnable(...)的调用时,如果超时代码触发您知道用户已离开你的应用程序(这是10秒超时的原因,如果有的话,可以提供新的Activity时间启动。

您可以在超时代码中添加一些东西以消除心跳。例如取消心跳Runnable