gpt4 book ai didi

java - LocationListener 在 android 服务中一段时间​​后不提供更新

转载 作者:行者123 更新时间:2023-11-29 04:33:37 26 4
gpt4 key购买 nike

我正在编写一个应用程序,我需要从后台快速获取位置更新。因此,我编写了一个服务来实现所需的结果。

我从 Activity 的 onCreate() 方法启动服务。

我面临的问题是,该服务能够在服务激活后的大约 20 到 30 秒内提供位置更新。然后我没有收到任何更新。

这是服务的代码:

public class MyLocService extends Service
implements
LocationListener{

private final LocationListener locationListener = this;

@Override
public int onStartCommand(Intent intent, int flags, int startId) {

Handler handler = new Handler(Looper.getMainLooper());
Runnable runnable = new Runnable() {
@Override
public void run() {
if (checkPermission()) {
manager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);

manager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);
manager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener);
}
else{
//Request Permission
Intent permissionIntent = new Intent();
permissionIntent.setAction(LOCATION_PERMISSION_REQUIRED);
sendBroadcast(permissionIntent);
}
Looper.loop();
}
};

handler.post(runnable);

//Create notification nad run in foreground
startForeground(
NotificationCreator.getNotificationId(),
NotificationCreator.getNotification(context)
);

return Service.START_STICKY;

}

@Override
public void onLocationChanged(Location location) {
Log.d("LocUpdate", location.getLatitude() + " : " + location.getLongitude());
}

每次我从以下 Activity 启动服务时:

Intent intent = new Intent(this, MyLocService.class);
startService(intent);

我在 onLocationChange() 中获得更新 20 到 30 秒。

另一个观察结果是:如果我保持 Activity (从我开始服务的地方打开并可见),那么我会继续获取位置更新。但是,当我关闭 Activity 或终止应用程序并允许服务(单独)在后台运行时,尽管服务正在运行,但我没有收到任何位置更新,因为我可以在屏幕顶部看到通知。

我做错了什么?

最佳答案

我已经解决了这个问题。关闭 miui 中的电池优化或将应用程序添加为异常(exception)。代码完美运行。

关于java - LocationListener 在 android 服务中一段时间​​后不提供更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42705419/

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