Android前台定位服务是一项非常较为耗电的操作,因此系统会根据优先级和需要的时间段来控制它的运行。如果用户不及时终止服务,则会在一段时间后自动停止。以下是一个常见的实现方式,可以解决Android前台定位服务运行一段时间后停止的问题:
public class LocationService extends Service {
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// 将服务设置为前台服务
Notification notification = new NotificationCompat.Builder(this, "channelId")
.setContentTitle("Location Service")
.setContentText("正在定位...")
.setSmallIcon(R.drawable.ic_launcher_foreground)
.build();
startForeground(1, notification);
// 使用LocationManager开始定位
// ...
return super.onStartCommand(intent, flags, startId);
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
}
Intent intent = new Intent(this, LocationService.class); startService(intent);
这样就可以在Android前台定位服务停止后自动重启它,确保您的应用程序一直从位置数据中获益。