android - 每次代码运行时都会创建 Firestore 云新文档
问题描述
每当从应用程序将位置发送到 Firestore 云时,它每次都会创建一个新文档。我只希望更改发生在已更改的文档字段中。
这是我的代码:-
LocationManager locationManager;
LocationListener locationListener;
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if( grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){
if(ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED)
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 60 , 0,locationListener);
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
locationListener = new LocationListener() {
@Override
public void onLocationChanged(Location location) {
Toast.makeText(MainActivity.this, location.toString(),Toast.LENGTH_LONG).show();
FirebaseFirestore db = FirebaseFirestore.getInstance();
db.collection("Location")
.add(location)
.addOnSuccessListener(new OnSuccessListener<DocumentReference>() {
@Override
public void onSuccess(DocumentReference documentReference) {
Log.d("Info", "DocumentSnapshot added with ID: " + documentReference.getId());
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.w("Info", "Error adding document", e);
}
}); ...
}
解决方案
推荐阅读
- python - 熊猫等于数据框的所有列名
- bash - 命令替换中的bash逻辑
- c# - Visual Studio for Mac:隐藏应用程序输出中的 DLL 加载
- docusaurus - 在 Docusarus 中挂钩 React Router 事件?
- ios - SwiftUI | 警告:绑定首选项 _ 尝试每帧更新多次。可能的原因?
- python - python程序中的运行时错误将中缀转换为后缀
- javascript - reactjs不能合并两个pdf
- ios - 如何在 macbook pro big sur 上安装 expo CLI?
- javascript - 有没有办法像猫鼬一样在 Sequelize 时间戳中设置“过期”选项?
- laravel - Laravel 天文可翻译更新方法