サーバーへのすべての API 呼び出しを ( 経由でAsyncTask
)管理するクラスを開発しました。doInBackground()
onPostExecute()
onPostExecute()
このようにして、通信クラスをジェネリックに保つことができ、Activity はそれにコールバックを送信して UI をアクティブ化および更新します。
どうすればそれを行うことができますか?
ありがとう!
サーバーへのすべての API 呼び出しを ( 経由でAsyncTask
)管理するクラスを開発しました。doInBackground()
onPostExecute()
onPostExecute()
このようにして、通信クラスをジェネリックに保つことができ、Activity はそれにコールバックを送信して UI をアクティブ化および更新します。
どうすればそれを行うことができますか?
ありがとう!
答えは受け入れられますが、別の実際の匿名実装を追加するだけです。これが他の人に役立つことを願っています。
あなたのインターフェース:これを AsyncTask クラス内に実装できます。
public interface ImageLoaderListener{
void imageDownloaderCallBack(Bitmap bmp);
}
AsyncTask クラスのコンストラクター:
// declare interface variable
private ImageLoaderListener listener;
private String link;
public ImageDownloader(String link, ImageLoaderListener listener){
this.link = link;
this.listener = listener;
}
onPostExecution :
@Override
protected void onPostExecute(Void result){
listener.imageDownloaderCallBack(bitmap);
// your code, i was returning bitmap
}
Activity クラスでの実装:
ImageDownloader imageDownloader = new ImageDownloader(url, new ImageLoaderListener(){
@Override
public void imageDownloaderCallBack(Bitmap bmp) {
// update Ui elements
}
});
imageDownloader.execute();
また、戻り値に基づいて Ui 要素を更新する必要がある場合imageDownloaderCallBack
は、関数自体の中にそのコードを記述する必要があることに注意してください。