我想在失去GPS信号时通知,我发现了这个:
https://stackoverflow.com/a/8322160/1034806
但是如果没有启动onLocationChanged(),如何比较getTime()的两个值呢?
答案 0 :(得分:1)
最简单的方法是发送延迟消息:
private static final int MSG_SIGNAL_LOST = 1;
private static final int GPS_SIGNAL_LOST_TIME = 10000; // 10 seconds
private final Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case MSG_SIGNAL_LOST:
handleGpsSignalLost();
break;
}
};
};
private void handleGpsSignalLost() {
// GPS signal lost, handle here
}
private void postDelayedGpsLostCheck() {
mHandler.removeMessages(MSG_SIGNAL_LOST);
mHandler.sendEmptyMessageDelayed(MSG_SIGNAL_LOST, GPS_SIGNAL_LOST_TIME);
}
每次调用postDelayedGpsLostCheck()
方法时,只需调用onLocationChanged()
方法。
您甚至不需要保存和比较时间。
另外别忘了打电话
mHandler.removeMessages(MSG_SIGNAL_LOST);
当你离开活动时。