【发布时间】:2016-12-10 16:44:48
【问题描述】:
您好,我正在开发一个 Android 应用程序,使用 Firebase,我在尝试从 firebase onchange 方法中获取数据时遇到问题它不断从方法中返回 null,就像数据仅在方法内部可用一样,并且外面为空。 更明确地说,我有一个数据数组,其中包含一些名称和对 firebase 存储中图片的 url 引用,因此我获取了数组并将数据放入 textviews 等(所有这些都发生在 onchange 内部,因为外部数据是null ),当我想下载图片时,我需要使用另一种 firebase 方法,我收到此错误,我认为这是因为另一个内部有一个异步方法,该错误说明有关最大线程达到 128 或类似的东西这个,这是代码
ideasListFireRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
HashMap<String, HashMap> ideasList = (HashMap<String, HashMap>) dataSnapshot.getValue();//getting list
idsList = new ArrayList<>( ideasListFire.keySet()); //list of IDs of picture to get from firebase storage //method to get pictures from firebase storage
imagesTab = new HashMap<>();
while (i < idsList.size()) {
final long ONE_MEGABYTE = 1024 * 1024;
StorageReference storageRef = FirebaseStorage.getInstance().getReferenceFromUrl(ideasListFire.get(idsList.get(i)).get("mainPic").toString());
storageRef.getBytes(ONE_MEGABYTE).addOnSuccessListener(new OnSuccessListener<byte[]>() {
@Override
public void onSuccess(byte[] bytes) {
// Got the download URL for 'users/me/profile.png'
Bitmap bmp = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
imagesTab.put(idsList.get(i), bmp);
// testim.setImageBitmap(bmp);
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
// Handle any errors
}
});
这段代码给了我线程问题的错误 并且方法分开的其他代码在 Ids 列表中给出 null 导致 idsList 在 onDataChange 方法中为 null 非常感谢您的帮助和原谅我的英语错误 =)
【问题讨论】:
标签: android firebase android-asynctask firebase-storage