gpt4 book ai didi

android - 如何保持后台gps服务活跃

转载 作者:行者123 更新时间:2023-11-29 22:19:17 27 4
gpt4 key购买 nike

我正在尝试将后台 gps 位置监听器作为一项服务,供我的应用程序中的所有 Activity 使用。它也应该扫描位置,直到我“杀死”它。然而,我意识到几个小时后 gps 服务被终止,我无法再获得位置。

如何让这个服务保持 Activity 状态(至少是 locationManager 和位置监听器)直到我想关闭它?

谢谢

public class GPS extends IntentService {
public static LocationListener loc_listener = null;
public static LocationManager locationManager = null;

public GPS() {
super("GPS");
}

@Override
protected void onHandleIntent(Intent intent) {
locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
if (loc_listener == null) {
loc_listener = new LocationListener() {

@Override
public void onStatusChanged(String provider, int status,
Bundle extras) {
// TODO Auto-generated method stub

}

@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub

}

@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub

}

@Override
public void onLocationChanged(Location location) {
// TODO Auto-generated method stub

}
};
}
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0,
0, loc_listener);
}

public static void killGPS() {
if (locationManager != null && loc_listener != null) {
locationManager.removeUpdates(loc_listener);
}
}

}

最佳答案

However I realized that after a couple of hours the gps service gets killed and I can't get anymore locations.

首先,让 GPS 始终处于开启状态是一个非常糟糕的主意,因为用户的电池生命周期会受到很大影响。您的应用程序需要提供巨大的值(value)(例如 Google 导航)以保证这种电力成本。

其次,永远不要从 IntentService 注册监听器。一旦 onHandleIntent() 结束,服务就会关闭……但是你泄露了注册的监听器。这有效地保持了后台线程的运行。但是,由于您没有 Activity 组件,Android 最终会终止您的进程。

关于android - 如何保持后台gps服务活跃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7694381/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com