仅当对象内部的方法完成时才返回对象

时间:2015-07-03 12:16:21

标签: java parse-platform return

我使用Parse.com作为我的后端,并希望创建一个方法,将查询对象的列作为Bundle返回。虽然我遇到了返回问题但是如何推迟返回直到查询完成?我想把它放在查询的done方法中,但由于它是一个void方法,所以不允许这样做。这是我的代码:

public static Bundle queryForExtras() {

    final Bundle extras = new Bundle();

    ParseQuery<Song> query = ParseQuery.getQuery(Song.class).fromPin(PIN_LABEL_SONG);
    query.getFirstInBackground(new GetCallback<Song>() {
        @Override
        public void done(final Song song, ParseException e) {

            if (e == null) {
                extras.putString(COLUMN_SONGNAME, song.getSongname());
                extras.putString(COLUMN_LYRICS, song.getLyrics());

                // I WANT TO RETURN EXTRAS HERE

            } else {
                // Something went wrong
            }
        }
    });

    return extras;
}

如何实现我想要的行为?

1 个答案:

答案 0 :(得分:4)

由于getFirstInBackground显然是在后台执行,因此您无法直接返回方法queryForExtras的值。如果你想使用getFirstInBackground,你必须创建一种在收到包后调用的监听器。

然而,最简单的方法是使用不在后台运行的getFirst方法。因此,您可以直接访问queryForExtras中的结果:

public static Bundle queryForExtras() {
    ParseQuery<Song> query = ParseQuery.getQuery(Song.class).fromPin(PIN_LABEL_SONG);
    Song song = query.getFirst();

    final Bundle extras = new Bundle();
    extras.putString(COLUMN_SONGNAME, song.getSongname());
    extras.putString(COLUMN_LYRICS, song.getLyrics());
    return extras;
}