我试图让用户在我的应用中创建新的播放列表,当用户这样做时,我会把他/她输入的字符串上传到firebade数据库并存储在那里,为了做到这一点,我使用addListenerForSingleValueEvent在我的应用程序中,监听器获取当前可用的播放列表的数量并添加一个以便将成为播放列表ID(将来可用于未来的功能),但是当这个监听器开始做它的事情时它会使我的应用程序不稳定并且延迟到应用程序不再可用的程度,我尝试了任何事情并花了几个小时搜索更好的方法来解决我想要做的事情,但我什么都没有,这是我的代码。
请注意,该应用程序运行良好,非常顺利,直到用户尝试创建新的播放列表和那些代码行开始工作,这段代码工作,我可以看到firebase数据库更新和新播放列表被添加到应用程序,但正如我提到的应用程序开始工作非常慢......
public void addNewPlayList(final String playlistName){
myRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
//add new playlist to the "playists" node
int playlistsCounter = (int) (dataSnapshot.child("playlists").getChildrenCount() + 1);
myRef.child("playlists").child("playlist"+playlistsCounter).child("playlist_creator").setValue(userID);
myRef.child("playlists").child("playlist"+playlistsCounter).child("playlist_name").setValue(playlistName);
//add new playlist to the "users" node under the user id > "playlist"
int counter = (int) (dataSnapshot.child("users").child(userID).child("playlists").getChildrenCount() + 1);
myRef.child("users").child(userID).child("playlists").child("playlist"+counter).child("user_playlist_id").setValue("playlist"+playlistsCounter); //set the playlist id here
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
任何人都知道从firebase获取此信息并向firebase添加数据的更好方法吗?