0

我正在设计一个 android 应用程序,我想在其中列出特定位置的所有餐厅。这发生在应用程序启动时。随着位置的变化,即使应用程序已经打开,餐厅列表也应相应更改。无论我在谷歌上得到什么例子,都可以通过点击一个按钮来填充餐厅。但在我的情况下,它发生在启动时,如果应用程序已经启动,那么也取决于列表应该自行更改的位置。

我创建了一个 MainClass,它下面有一个 AsyncTask 的子类,这个子类有一个实现 LocationListener 的类。但问题是我必须在 onLocationChange 中再次调用 doInBackground() 方法才能在位置更改时自动获取结果。

请指导我该怎么办?

4

3 回答 3

2

将获取用户位置和收集新餐厅数据的所有逻辑放入Service. 可以侦听您的Service位置更新(如果您希望它一直运行,希望将其设置为稀疏间隔),然后在AsyncTask发生需要新数据的足够大的更改时使用您的更新列表。

当它在前台(在和方法之间)时,您可以绑定到Servicein以获取最新信息,并在数据更新期间注册为回调,而在您的列表中调用可见。ActivityonPause()onResume()ActivitynotifyDataSetChanged()

您可以在此处阅读有关Service在应用程序中本地创建绑定的更多信息。

高温高压

于 2012-05-08T16:01:43.027 回答
1

为餐馆列表使用一些 ArrayAdapter 并将其实例保存在 Main 类中,然后每当位置更改时,使用 AsyncTask 检索附近的餐馆并onPostExecute替换 ArrayAdapter 内部列表并调用notifyDataSetChanged().

于 2012-05-08T16:03:27.477 回答
0

聆听主课中的位置变化。收到(重大)更改后,启动异步任务以查询餐馆。将结果(例如餐厅数组)传递给 onPostExecute 并相应地更新您的 UI。

可能在查询餐厅时禁用更新,或者取消查询并在每次新更新时启动一个新查询。

于 2012-05-08T15:59:30.173 回答