私はyoutube APIにリクエストするためのasyncTaskを持っています。私はAsyncTaskからデータを返そうとしていますが、YouTubeリクエストを実行するとすぐにフリーズします。別の非同期呼び出しをdoInBackgroundで行うAsyncTaskから値を返す方法
public class FindPreviousPlaylistTask extends AsyncTask<Void, Void, PlaylistListResponse> {
@Override
protected PlaylistListResponse doInBackground(Void... params) {
YouTube.Playlists.List playlistsListMineRequest = getYoutube().playlists()
.list("snippet,contentDetails")
.setMine(true)
.setMaxResults(50L);
ArrayList<Playlist> foundPlaylists = new ArrayList<Playlist>();
PlaylistListResponse response = playlistsListMineRequest.execute(); //Async call
return response;
return null;
}
}
private PlaylistListResponse getPlaylist(){
FindPreviousPlaylistTask previousPlaylistTask = new FindPreviousPlaylistTask();
return previousPlaylistTask.execute().get();
}
AsyncTaskの全体のポイントは、メインスレッドの外ユーチューブ呼び出しを行うですが、今私はユーチューブコールの値を返すことはできません。私は.get()
なしpreviousPlaylistTask.execute()
を呼び出すと
は、それはあなたが終了し、結果を取得するためのタスクのために、現在のスレッドを待機させget()
を呼び出しているので、アプリがフリーズ
のようにカスタムリスナを呼び出すことができ、この
のようなインターフェイスを作成することができます' –
@ρяσѕρєяKあなたは何を意味するのか分かりません。 – code511788465541441
例:[カスタムリスナーの作成](https://guides.codepath.com/android/Creating-Custom-Listeners) –