2013-06-19 74 views
0

我想每012分钟跟踪的用户位置并将用户位置存储在数据库中。 如果用户位置30分钟没有变化,那么我必须通知用户,如果用户在特定时间没有关闭应用程序。 例如:下午8时我还必须通知用户在Android中执行位置跟踪

跟踪应该在单独的线程中,以便应用程序可以在位置跟踪进行时执行其他任务。

我完全陷在这一点,我怎样才能使单独的线程来三件事

  1. 的位置跟踪

  2. 30分钟提醒通知

  3. 为8.00下午提醒

如果向用户显示通知,并且位置发生变化,则应删除通知并跟踪应正常完成

+0

请帮帮我。 PLZ指导我如何执行针对单独位置更新和通知的线程 –

+0

您必须在场景中使用具有服务的线程。 – amalBit

回答

0

您需要为此服务,并且在服务中您可以以一分钟的时间间隔实现位置监听器,并且对于电池优化,您应该使用Google Location API。而且您还使用活动识别来查找用户移动。

+0

你可以举一些例子来启动它 –

0

如果您每分钟检查一次该位置,则您的电池寿命将会缩短。

无论如何,所有这些任务都可以通过使用AlarmManager来完成。您将为下一个事件设置一个时间,当它发生时,即使您的Activity位于后台,代码也会运行。我不完全确定你的意思是“晚上8点关闭应用程序”,应用程序不需要看到这些事情发生。

+0

“关闭应用程序”意味着我必须停止跟踪 –

+0

您最好向应用程序添加一个禁用(并启用!)跟踪的按钮。或者你期望用户无法使用他的设备? – dmon

+0

我已经添加了按钮,但如果用户忘记点击关闭按钮,那么我必须给出通知 –

1

我看到没有必要为此使用线程。 location strategy page上的Android文档定义了如何获取位置更新,并且可以使用Countdown timer来完成您的时间安排。

+0

除了你不应该运行所有这些不同的逻辑在来自“背景”“服务”的主线程上 - 这将影响所有其他应用程序的前台UI。 - 这就是为什么你想在'Service'中产生其他线程的原因。 –

+1

@Richard位置API和倒数计时器API都是回调函数,因此是非阻塞的,因此是非阻塞的。 – Dobbo

+0

当然可以! +1你已经指出了一些如此明显的东西,但也显示了我的跟踪器中一个糟糕的设计错误(实际上我没有多线程,但我经常调用startService)。有时需要一个全新的视角来清楚地看到某些事情。 –