Android 何时注册位置更新?
我正在编写一个Android应用程序,它需要用户的当前位置。我使用以下代码从网络和GPS注册位置更新(locationManager已定义): 我目前在Android 何时注册位置更新?,android,locationmanager,oncreate,onresume,locationlistener,Android,Locationmanager,Oncreate,Onresume,Locationlistener,我正在编写一个Android应用程序,它需要用户的当前位置。我使用以下代码从网络和GPS注册位置更新(locationManager已定义): 我目前在onCreate中有此代码,但为了节省电源,我在onPause中删除了两个侦听器,并在onResume中再次添加它们 当应用程序启动时,它会添加两个侦听器,一个在onCreate中,一个在onResume中。我有两个问题: 将每个侦听器添加两次是否意味着实际上添加了两次,还是第二次调用没有效果 我应该从onCreate中删除requestLoca
onCreate
中有此代码,但为了节省电源,我在onPause
中删除了两个侦听器,并在onResume
中再次添加它们
当应用程序启动时,它会添加两个侦听器,一个在onCreate
中,一个在onResume
中。我有两个问题:
onCreate
中删除requestLocationUpdate
s并将它们放在onResume
中,还是应该在再次添加它们之前先删除onResume
中的所有侦听器我只想将它们添加到
onResume()
中。在onCreate()
中创建管理器,并在onResume()和onPause()中添加和删除侦听器
你的第一个问题我没有答案
您的侦听器将作为密钥添加到Hashmap。因此,如果您插入此
(您的活动)而不覆盖等于
,则应该覆盖它,并且没有效果,因为它是同一个侦听器
无论如何,我会删除onCreate中的寄存器,并将其保留在onResume中,因为这样至少可以节省对侦听器和方法调用进行散列的时间
第一个问题的答案可以是
// Register the listener with the Location Manager to receive location updates.
locationManager.requestLocationUpdates(
LocationManager.NETWORK_PROVIDER,
getResources().getInteger(R.integer.gps_min_time),
getResources().getInteger(R.integer.gps_min_dist), this);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,
getResources().getInteger(R.integer.gps_min_time),
getResources().getInteger(R.integer.gps_min_dist), this);