我使用的AsyncTask類來處理從服務器端傳來的圖像中的ImageView
顯示出來我有一個下一步按鈕在我的代碼使用下面的代碼來調用下一張圖片:
手柄的AsyncTask
private class LoadImage extends AsyncTask<Void, Void, Void> {
@Override
protected void onPostExecute(Void result) {
if (imgque != null) {
imgSelectedQue.setImageDrawable(imgque);
if (getActivity() != null) {
adjustResourceEnvelope();
}
}
}
@Override
protected void onPreExecute() {
imgque = null;
imgSelectedQue.setImageDrawable(null);
imgSelectedQue.requestLayout();
}
@SuppressWarnings("deprecation")
@Override
protected Void doInBackground(Void... params) {
InputStream is;
try {
is = (InputStream) new URL(Constants.PLAYER_SERVICE_BASE_URL + "/playerservice"
+ imageurl).getContent();
imgque = Drawable.createFromStream(is, null);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
imgque = null;
e.printStackTrace();
}
return null;
}
}
現在的問題是,如果我點擊下一步按鈕Gz重複那麼它調用的AsyncTask,很多時候和ImageView的顯示都喜歡「幻燈片放映」的圖像,因爲所有的URL圖像在隊列中。
有什麼方法可以只顯示最後一個AsyncTask調用圖像嗎?
效率不高,也要注意取消呼叫的行爲是不一樣的,不能保證一直成功,請自己檢查一下API。 – yorkw
確定@yorkw它適用於我...如果您有任何建議,請告訴我。 – KDeogharkar
常用策略是使用AsyncTask.getStatus()。當點擊按鈕時,如果有一個當前正在運行,則不要啓動另一個按鈕。 – yorkw