当前位置: 首页 > 知识库问答 >
问题:

在FiRecovery中检索实时数据库值

席兴朝
2023-03-14

实际上,我想向用户显示联机/脱机状态。我读过https://firebase.google.com/docs/firestore/solutions/presence并实现了onDiscount()来更新折扣时的实时数据库,但问题是当用户折扣时,Firestore中的数据不会更新。

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


     Map<String, Object> user = new HashMap<>();


        myRef.child(IS_ONLINE).setValue(true);
        myRef.child(IS_ONLINE).onDisconnect().setValue(false);

        myRef.child("isOnline").addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot snapshot) {
                status = snapshot.getValue(Boolean.class);
                user.put("isOnline", status);
                doctRef.set(user);

            }

            @Override
            public void onCancelled(@NonNull DatabaseError error) {

            }
        });


}

共有1个答案

狄宏大
2023-03-14

我创建了一个服务来调用此方法,您可以这样尝试。一旦这些应用真正从后台删除,就会触发此服务。

public class ClosingService extends Service {
    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }
    @Override
    public void onTaskRemoved(Intent rootIntent) {
        super.onTaskRemoved(rootIntent);
        // Handle application closing
        DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference().child(getString(R.string.USER));
        FirebaseUser firebaseUser = FirebaseAuth.getInstance().getCurrentUser();
        if (firebaseUser != null) { databaseReference.child(firebaseUser.getUid()).child(getString(R.string.sedang_online)).setValue(false);
        databaseReference.child(firebaseUser.getUid()).child(getString(R.string.lastSeen)).setValue(System.currentTimeMillis());
    }
    // Destroy the service
    stopSelf();
}
}

之后,在应用程序启动时调用此服务。例如,在Splashscreen活动中。

    //Start closing service
    final Intent stickyService = new Intent(this, ClosingService.class);
    startService(stickyService);

并且不要忘记在android清单上创建服务。

   <service
        android:name=".u.ClosingService"
        android:stopWithTask="false" />
 类似资料:
  • 在身份验证成功时,我正在编写以下代码:

  • 问题内容: 我目前正在学习Firebase和iOS的知识,因此请耐心等待。我当前正在发布到我的表,如下所示: 我正在尝试检索插入新记录时创建的内容,但是无法检索它。我已经尝试过( 但是由于浏览网页而无法找到一个可靠的解决方案,所以这是一个随机的猜测 )。有任何想法吗? 问题答案: 注意 :-Althogh 是自以来的一项强大功能,但是当您想创建具有唯一键的节点时更喜欢将数据存储到其中。我之所以喜欢

  • 请帮助我想从Firebase实时数据库检索一个特定的数据,我有2个用户,教授和学生,我想使用该数据进行验证。 FireBase实时数据库 FireBase实时数据库

  • 我对Firebase和Android是新手。我已经在我的Firebase帐户中存储了用户身份验证详细信息(姓名、个人资料图像而不是电子邮件ID)。我想检索那些数据(如姓名等)到我的应用程序的其他部分。如何检索实时数据库子值?

  • 我试图显示一个零件的"loc",如果它的零件号我给。以下是数据结构的样子: 活动代码: getLoc是Product类的getter函数,它返回给定curP对应的“loc”。curP部分表示子值。 逻辑对我来说似乎是正确的,但我没有得到输出。我哪里出了问题?