谁在 Android 的 LocationManager 中触发 onLocationChanged?
我在之前关于 Android 位置提供程序的帖子中寻找这个答案,但我找不到答案。 onLocationChanged 是如何触发的?从 GPS 守护程序/库修复位置到到达 LocationManager 的过程是什么?它是直接由 Gps 守护进程触发还是首先在 Android Java 框架中的某个位置触发?
非常感谢
N
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我一直在查看代码,这就是我到目前为止所拥有的:
requestLocationUpdates 注册了 onLocationChangeListener。
这反过来作为键存储在哈希图中,值为 ListenerTransport。
ListenerTransport 有一个 私有变量 这是有问题的听众。 ListenerTransport 似乎只是一个接收消息的类,它 调用 onLocationChange侦听器的方法。
这就是我迷路的地方:
ListenerTransport 扩展了 ILocationListener.Stubs,而 ILocationListener.Stubs 又扩展了 Binder。因此,它是一种 RPC 调用。但是电话会去哪里呢?
我注意到在
requestLocationUpdates()
的ILocationListener.Proxy
中,有一个对IBinder.transact(Stub.TRANSACTION_requestLocationUpdates,...)
的调用。事情会走向何方以及会发生什么还有待观察……I've been looking around the code and this is what i have thus far:
requestLocationUpdates registers the onLocationChangeListener.
This in turn gets stored as a key in a hashmap with a value of a ListenerTransport.
The ListenerTransport has a private variable which is the listener in question. The ListenerTransport just seems to be a class that recieves a message, which calls the onLocationChange method of the listener.
This is where i'm lost:
The ListenerTransport extends
ILocationListener.Stubs
which extends Binder. Hence, its a type of RPC call. But where does the call go?I've noticed in
ILocationListener.Proxy
inrequestLocationUpdates()
, theres a call toIBinder.transact(Stub.TRANSACTION_requestLocationUpdates,...)
. It's to be seen where this goes and what happens...检查此处:有关 Android 中位置的更多信息
和 Android 中的位置监听器
这会对你有帮助!
Check here:More about Location in Android
and Location Listener in Android
This will help you!