我需要实施常规heartbeat
。
heartbeat
本身是对我的服务器的简单HTTP-GET
调用。
只要我的应用程序处于打开状态,我就想发送它。当我关闭应用程序时,发送应该停止。
我读了一些关于Services和AlarmManager的内容,但在浏览应用活动时如何调用/停止它们?
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);
任何人都可以发布一个好的例子或链接吗?
谢谢!
答案 0 :(得分:1)
只要我的应用程序处于打开状态,我就想发送它。当我关闭 发送应该停止的应用程序
在Android中比iOS更难,但让我们这样做: 在Android中,当应用程序进入后台或被杀时,您在应用程序级别没有回调。例如,您应该在每个Activity onStop方法处理。看一下Activity生命周期:
或onDestroy方法。注意: 当一项活动不再可见时,可能是因为您的应用程序已进入后台,已关闭或其他活动可见。您必须确定哪种情况并使用您的HTTP Get / Post,或在需要时停止它。
Here是一个示例代码,其中包含通过HTTP发送数据的异步任务。
答案 1 :(得分:0)
我使用类似Handler
的代码实现了一个简单的超时。当Activity
调用onPause
在10秒延迟时触发超时,当Activity
调用onResume
取消与removeRunnable(...)
的调用时,如果超时代码触发您知道用户已离开你的应用程序(这是10秒超时的原因,如果有的话,可以提供新的Activity
时间启动。
您可以在超时代码中添加一些东西以消除心跳。例如取消心跳Runnable