gpt4 book ai didi

android - com.google.android.gms.location.LocationCallback 是接口(interface)还是类?

转载 作者:行者123 更新时间:2023-11-29 16:28:58 30 4
gpt4 key购买 nike

我想使用此方法获取位置更新:FusedLocationProviderClient#requestLocationUpdates(LocationRequest locationRequest, LocationCallback locationCallback, Looper looper)

Stackoverflow 中实现此方法的大部分答案都必须重写 LocationCallback 方法。可以找到一个最近的例子 in this question

该问题的代码 fragment 如下:

mLocationCallback = new LocationCallback() {

@Override
public void onLocationResult(LocationResult locationResult) {
synchronized (SilentCurrentLocationProvider.this) {
super.onLocationResult(locationResult);
Location location = locationResult.getLastLocation();
}
};

但是当我尝试像这样初始化 LocationCallback 时。我没有被 Android Studio 强制覆盖上面的方法。当我检查 LocationCallback 类的源代码时,我发现它是普通的 java 类,并且 onLocationResult 方法在那里,但不会覆盖。 screenshot of the source code of LocationCallback class in my Android Studio

最佳答案

编译器唯一会强制您覆盖的情况是在抽象 实现的情况下。您看到的 LocationCallBack 类不包含任何抽象成员。请注意他们如何使用 { }。这意味着它已经定义了“具体”的实现。还有一点要注意,它们不是final,这意味着它们可以被覆盖或根本不被覆盖,这解释了为什么编译器不强制你。

您实际上是在创建一个匿名类,然后选择要覆盖的类。在您的例子中,您选择了 onLocationResult() 方法。

mLocationCallback = new LocationCallback() { //Creating anonymous class to provide our own implementation for onLocationResult

@Override
public void onLocationResult(LocationResult locationResult) {
synchronized (SilentCurrentLocationProvider.this) {
super.onLocationResult(locationResult);
Location location = locationResult.getLastLocation();
}
};

关于android - com.google.android.gms.location.LocationCallback 是接口(interface)还是类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57953048/

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