0

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

    // 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);

我目前onCreate在.onPauseonResume

当应用程序启动时,它会添加两个侦听器两次,一次在 中onCreate,一次在 中onResume。我对此有两个问题:

  1. 每个监听器添加两次是否意味着它实际上被添加了两次,或者第二次调用没有效果?
  2. 我应该requestLocationUpdate从中删除 sonCreate并将它们放入,还是应该在再次添加之前先onResume删除所有侦听器?onResume
4

2 回答 2

1
  1. 您的 Listener 将作为键添加到 Hashmap。所以如果你插入this(你的活动)并且不覆盖equals它应该被覆盖,并且没有效果,因为它是相同的侦听器。

  2. 无论如何,我会删除 onCreate 中的寄存器并将其留在 onResume 中,因为您至少可以节省时间来散列您的侦听器和方法调用。

于 2012-05-29T09:04:39.653 回答
1

我只是将它们添加到onResume(). 在 和中创建管理器onCreate()并添加和删除侦听onResume()onPause()

你的第一个问题我没有答案。

于 2012-05-29T08:58:02.117 回答