Android 何时注册位置更新?

Android 何时注册位置更新?,android,locationmanager,oncreate,onresume,locationlistener,Android,Locationmanager,Oncreate,Onresume,Locationlistener,我正在编写一个Android应用程序,它需要用户的当前位置。我使用以下代码从网络和GPS注册位置更新(locationManager已定义): 我目前在onCreate中有此代码,但为了节省电源,我在onPause中删除了两个侦听器,并在onResume中再次添加它们 当应用程序启动时,它会添加两个侦听器,一个在onCreate中,一个在onResume中。我有两个问题: 将每个侦听器添加两次是否意味着实际上添加了两次,还是第二次调用没有效果 我应该从onCreate中删除requestLoca

我正在编写一个Android应用程序,它需要用户的当前位置。我使用以下代码从网络和GPS注册位置更新(locationManager已定义):

我目前在
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);