网络监听器没有获得积分

时间:2011-12-15 12:31:16

标签: android

我的locationListener有问题。

这是我的“MyLocationListenerNetWork”:

public class MyLocationListenerNetwork implements LocationListener {

    public MyLocationListenerNetwork(){
        super();
    }

    @Override
    public void onLocationChanged(Location loc) {
        if(loc!=null){

        }
    }

    @Override
    public void onProviderDisabled(String pDisabled) {
            }

    @Override
    public void onProviderEnabled(String pEnabled) {
        }

    @Override
    public void onStatusChanged(String provider, int status, Bundle extras) {
    }
}

关键是,我有一个服务,我想“请求”监听器获取网络点。我在onCreate()

中喜欢这个
LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
            locationListenerNetwork = new MyLocationListenerNetwork();
            if(locationListenerNetwork!=null)
                lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 
                        0, 0, locationListenerNetwork);

它没有问题得分。问题是它消耗了大量的电池,如果我一直让它,它会消耗30-40%的电池。我想只打开一段时间。 这就是为什么在服务内部我有一个Thread,并且在这个线程中,我只打开了一段时间(5分钟)的监听器,但是当我这样做时,监听器没有检索到任何一点......

任何人都知道为什么?

1 个答案:

答案 0 :(得分:0)

我认为在 reQuestLocationUpdates 方法中检查参数 minTime

你需要什么,所以刚才提到了minTime参数中的位置请求时间所以你不需要一个线程来实现这个 ..

public void requestLocationUpdates (String provider, long minTime, float minDistance, LocationListener listener)

自:API Level 1

注册指定提供商定期通知的当前活动。定期使用当前位置或状态更新来调用提供的LocationListener。

收到最近的位置可能需要一段时间。如果需要立即位置,应用程序可以使用getLastKnownLocation(String)方法。

如果用户禁用了提供程序,则更新将停止,并且将调用onProviderDisabled(String)方法。只要再次启用提供程序,就会调用onProviderEnabled(String)方法并再次启动位置更新。

可以使用minTime和minDistance参数控制通知频率。如果minTime大于0,则LocationManager可能会在位置更新之间休息minTime毫秒以节省电量。如果minDistance大于0,则仅当设备移动minDistance米时才会广播位置。要尽可能频繁地获取通知,请将两个参数都设置为0。

后台服务应该注意设置足够高的minTime,以便设备不会因为始终保持GPS或无线无线电而消耗太多电量。特别是,不推荐低于60000ms的值。

调用线程必须是Looper线程,例如调用Activity的主线程。

<强>参数

提供商要注册的提供商的名称

minTime 通知的最短时间间隔,以毫秒为单位。此字段仅用作节省电量的提示,位置更新之间的实际时间可能大于或小于此值。

minDistance 通知的最小距离间隔,以米为单位

侦听器一个{#link LocationListener},其onLocationChanged(Location)方法将针对每个位置更新进行调用

修改

GPS服务通常是内存饥渴。您需要GPS服务还是只需要查找位置更新? Android为基于位置的服务提供了一个很好的启动doco。 http://developer.android.com/guide/topics/location/obtaining-user-location.html 请尝试按照此doco中的步骤找到最佳用户位置。

确保在适当的时间停止侦听更新。如果一个应用程序即使在没有运行时也试图耗尽电池,用户也不会感到高兴。

尝试将应用程序作为后台任务...即服务或BroadcastReceiver