Android 如何更新视图以响应LocationListener.onLocationChanged()?
我正在开发的一个应用程序只有在它从某个地方找到一个位置后才能有意义地启动——不管是粗糙的还是精细的,都无所谓。它只需要一个不是空的。因此,我的活动课是按照以下思路进行的: onCreate():Android 如何更新视图以响应LocationListener.onLocationChanged()?,android,Android,我正在开发的一个应用程序只有在它从某个地方找到一个位置后才能有意义地启动——不管是粗糙的还是精细的,都无所谓。它只需要一个不是空的。因此,我的活动课是按照以下思路进行的: onCreate(): 实例化LocationManager 创建映射,以便跟踪我请求更新的所有LocationListener对象 onResume(): 从LocationManager获取已启用LocationProviders的列表 遍历列表。对于每一个,检查地图中是否已经有LocationListener。如果
- 实例化LocationManager
- 创建映射,以便跟踪我请求更新的所有LocationListener对象
- 从LocationManager获取已启用LocationProviders的列表
- 遍历列表。对于每一个,检查地图中是否已经有LocationListener。如果没有,创建一个新的,注册更新,并将其粘贴到地图中
- 渲染视图
- 从onResume()隐式返回。我很惭愧地承认这一点,但我完全不知道线程在这一点上发生了什么
ProgressDialog
或其他内容,让用户知道等待,直到您得到修复,并在修复时关闭该对话框。这里还有其他模式LocationListener
对象onLocationChanged()
中调用LocationListener
上的removeUpdates()
是没有问题的。再说一遍,我还没有试过。如果它确实抱怨(很可能是某种形式的ConcurrentModificationException
),则在MapView
上调用onLocationChanged()
调用post()
,以计划在将调用removeUpdates()
的主应用程序线程事件循环上调用Runnable
不确定它是否相关,但可能与地图和不同的侦听器有关,您正试图使用
addProximityAlert
针对1构建一个存在的功能,如果问题是由于您在错误的线程上而导致异常,您可以使用activitys runOnUiThread解决该问题。对于2,难道你不能在主活动暂停时注销你的侦听器吗?我不想在活动暂停(或甚至停止)时注销它们,因为我想让他们尝试并且活得足够长,至少可以在LocationProvider中缓存一个有意义的更新,这样下次我尝试调用它时,它就会立即在那里使用。我们的想法是使用0,0来启动侦听器,意思是“立即更新,d***它,快点!”,然后在实际生成更新后注销它们,这样,如果应用程序被忘记/停止,而侦听器仍在注册,那么它们就不会不断尝试更新。奔腾10:Oops,我想我不清楚。。。我的“Map”对象是一个HashMap,而不是一个“GoogleMap”。它的全部目的是让我可以创建侦听器并注册它们以进行更新,但我可以在稍后的时间回顾这堆侦听器以查看哪些仍然存在&需要取消注册以进行更新。但是为什么需要多个侦听器呢?嗨!谢谢回复!我有你所有的书(至少是公用软件和你的新书)。是否有一章我忽略了,它解释了主线程到达onResume()结尾的时间&隐喻性地从隐含的“返回”悬崖跌落到未知的边缘,以及某件事情导致它进入onPause()的时间之间发生了什么?我开始觉得自己患上了“HelloWorld综合症”——我看到了太多类似HelloWorld的例子,以至于我(继续)开始把它们误认为是创建Android应用程序的正确方法,并创建了一个可怕的类似弗兰肯斯坦(frankenstein)的基本应用程序