首页 > 解决方案 > TreeMap 未在某些设备上对元素进行排序

问题描述

我的对象:

public class School{
TreeMap<String, int> classes = new TreeMap<>();
}

这就是我将对象保存到 Firebase Realtime DB 的方式:

 mDatabase.child("School").setValue(school);

这就是我从 Firebase Realtime DB 检索对象的方式:

ValueEventListener listener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        SChool s = dataSnapshot.getValue(School.class);
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
    }
};

问题: 使用 TreeMap 应确保键的顺序,这些键始终正确写入数据库,如下所示:

在此处输入图像描述

在各种模拟器和物理设备上测试应用程序显示了预期的正常行为,即以与上面 DB 上可见的相同的升序方式查看类。

但是,我收到来自应用程序用户的抱怨,称该列表在他们的设备上根本没有排序顺序。这些设备包括:华为 Mate 8、Oppo F9。

我失去了理智,我在这里错过了什么吗?

标签: androidfirebase-realtime-databasetreemaphuawei-mobile-services

解决方案


我尝试再次上传应用程序,但这次使用“生成签名的 APK”,它现在在所有设备上都可以正常工作。甚至是用户对我的应用程序有问题的设备。

似乎在使用“生成签名包”在 google play 上发布应用程序时会导致各种问题,包括上述问题。它会引起混乱,因为许多设备在使应用程序正常工作并与 TreeMap 的正常预期行为时没有问题。但是,在其他设备上,TreeMap 根本不对键进行排序。

还要检查一下,这也是因为使用“生成签名包”上传到谷歌播放。


推荐阅读