【Android】Firebase配置与使用(下)

本文详述了如何在Android中使用Firebase进行实时数据库的查询、监听子节点变化及文件上传下载操作。通过示例代码展示了添加监听器、排序过滤数据、文件存储引用创建、断点续传等功能。
摘要由CSDN通过智能技术生成

上一篇博客记录了如何使用Firebase对实时数据库进行增删改以及持久化,本文记录如何对数据进行查操作,以及如何将文件上传服务器。

3.对实时数据库进行增删改查以及持久化操作(续)

Firebase数据库的检索操作主要是通过对树种的某一节点添加监听来实现(官方说的是对FirebaseDatabase添加监听,我认为不大准确,欢迎讨论),官方给出了几种可用的监听器,他们的功能如下:
这里写图片描述
对某一节点的事件进行监听,使用 addValueEventListener() 或者 addListenerForSingleValueEvent() 方法。 要对某一节点的子节点进行监听,可使用 addChildEventListener() 方法。
我们依然以博客文章为场景,看一个监听节点本身数据变化例子:

ValueEventListener postListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        // 监听到数据库变化,传入一个该路径下的节点数据“快照”
        Post post = dataSnapshot.getValue(Post.class);
        // ...
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
        // 监听数据库失败
        Log.w(TAG, "loadPost:onCancelled", databaseError.toException());
        // ...
    }
};
mPostReference.addValueEventListener(postListener);

我们看到,监听器ValueEventListener的onDataChange回调中,传入了一个DataSnapShot的对象,这个对象可以理解为当前节点处的数据快照,即他记录了当前节点的现状,我们可以通过这个快照获取该节点处的各个值,这里通过getValue()方法传入Post类型,获取到我们的Post的Java对象。

DataSnapShot的概念在我看来有点类似于上文中提到的MutableData,他们都封装了某个节点的“现状”,在Firebase数据库中,节点并非只有我们这里要的Post对象,还有该节点的ID等,我们所要的Post对象仅仅是该节点众多封装数据中的一个而已。

再看一个监听子节点变化的例子,在博客中我们需要监听评论的变化:

ChildEventListener childEventListener = new ChildEventListener() {
    @Override
    public void onChildAdded(DataSnapshot dataSnapshot, String previousChildName) {
        Log.d(TAG, "onChildAdded:" + dataSnapshot.getKey());
        // A new comment has been added, add it to the displayed list
        Comment comment = dataSnapshot.getValue(Comment.class);
        // ...
    }

    @Override
    public void onChildChanged(DataSnapshot dataSnapshot, String previousChildName) {
        Log.d(TAG, "onChildChanged:" + dataSnapshot.getKey());
        //一条评论被改动,我们可以获取这条评论的key来判断是否是一个正在被展示的评论,如果是则改动他
        Comment newComment = dataSnapshot.getValue(Comment.class);
        String commentKey = dataSnapshot.getKey();
    }

    @Override
    public void onChildRemoved(DataSnapshot dataSnapshot) {
        Log.d(TAG, "onChildRemoved:" + dataSnapshot.getKey());

        // 一条评论被删除,我们通过获取这条评论的key来判断是否为一个正在被展示的评论,如果是,则删掉它
        String commentKey = dataSnapshot.getKey();
        // ...
    }

    @Override
    public void onChildMoved(DataSnapshot dataSnapshot, String previousChildName) {
        Log.d(TAG, "onChildMoved:" + dataSnapshot.getKey());

        // 一条评论改变
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用Firebase应用内消息传递可以让你的Android应用实现实时通信和消息推送功能。下面是一些步骤来帮助你在Android应用上使用Firebase应用内消息传递: 1. 首先,在Firebase控制台中创建一个新的Firebase项目,并在项目设置中启用Firebase Cloud Messaging服务。 2. 在你的Android应用中,添加Firebase Core和Firebase Cloud Messaging依赖项。你可以通过Gradle文件来添加这些依赖项,例如: ``` implementation 'com.google.firebase:firebase-core:17.2.1' implementation 'com.google.firebase:firebase-messaging:20.0.0' ``` 3. 在你的AndroidManifest.xml文件中添加以下代码以注册Firebase Cloud Messaging服务: ``` <service android:name=".MyFirebaseMessagingService" android:exported="false"> <intent-filter> <action android:name="com.google.firebase.MESSAGING_EVENT" /> </intent-filter> </service> ``` 4. 创建一个MyFirebaseMessagingService类并继承FirebaseMessagingService。在这个类中,你可以处理接收到的消息并执行相应的操作,例如: ``` public class MyFirebaseMessagingService extends FirebaseMessagingService { @Override public void onMessageReceived(RemoteMessage remoteMessage) { // 处理接收到的消息 String message = remoteMessage.getData().get("message"); // 执行相应的操作 } } ``` 5. 最后,在你的应用中发送消息,你可以使用Firebase Cloud Messaging API来发送消息,例如: ``` FirebaseMessaging.getInstance().send(new RemoteMessage.Builder("SENDER_ID" + "@gcm.googleapis.com") .setMessageId(Integer.toString(msgId.incrementAndGet())) .addData("message", "这是一条测试消息") .build()); ``` 以上是在Android应用上使用Firebase应用内消息传递的一些基本步骤,你可以根据你的需求进行相关的配置和定制化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值