最近,我开发了一个关于旅游领域的应用程序。这个程序的目的是向用户展示;从源到目的地的路径。当用户进入目的地25米范围的范围时,用户会收到通知/警报,表明目的地在附近。
我试图实现的目标: 在onLocationChanged()中,我保留了目的地的范围&如果用户在范围内,则会弹出通知/警报。然而,当我测试应用程序时,我发现当我在该范围内时,通知会大量涌入设备,因为显示通知/警报的条件基于onLocationChanged(),即当位置发生变化时,循环执行完全相同的次数和用户对应用程序感到恼火。
此外,当我搜索其他位置时,该应用程序无法运行。它不显示目标标记。第一次看到目标标记,但后来的搜索没有显示目标标记;我想知道为什么?!
这个问题长期以来一直困扰着我。请帮帮我!
答案 0 :(得分:1)
您可以检查通知显示的时间,例如循环
boolean notification_shown = false;
for(...)
{
if(!notification_shown)
{
//show notification
notification_shown = true;
}
else
{
//rest of your coding
}
}
这只会显示通知一次。如果您想显示通知的次数比使用计数器少几倍。像
int counter = 0;
//increment it till you want and than stop
答案 1 :(得分:1)
可能最佳组合的两种可能的解决方案:一,使用静态对话框,以便您只有一个警报实例; 2,一到达目的地就会注销onLocationChanged()监听器(第一次提醒用户)。
答案 2 :(得分:1)
当你在onLocationChange()方法中使用循环时,在你的循环中取一个变量说“count”然后检查条件的距离。在特定条件成立后,增加计数。如果计数器得到1然后弹出一个警报,然后从循环退出。
int count = 0;
public void onLocationChanged(Location locFromGps){
如果(locFromGps< = 30) {
如果(计数== 1) {
出口(0);
}
计数++;
Toast.makeText(getApplicationContext(),“Location is near”,0).show();
}
}