android - 在类中处理 AsyncTask

标签 android android-asynctask

我正在使用 AsyncTask 类来处理来自服务器的图像以在 ImageView 中显示它
我的代码中有一个“下一步”按钮,用于使用以下代码调用下一张图像:

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;

    }
}

现在的问题是,如果我点击下一个按钮REPEATEDLY 那么它会多次调用 AsyncTask 并且 ImageView 显示所有图像,如“幻灯片放映”,因为所有 url 图像都在队列中.
有没有办法只显示最后一个 AsyncTask 调用图像?

最佳答案

做这样的事情:

[1] 当您在单击 NEXT 按钮时调用 LoadImage AsyncTask disable NEXT 按钮。

[2] 在LoadImage AsyncTaskonPreExecute() 方法上再次启用 您的NEXT 按钮。

或者,

您也可以使用简单的 FLAG 来实现这些目的。通过将其设置为 true 和 false。

希望对你有帮助。

谢谢。

关于android - 在类中处理 AsyncTask,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13891308/

相关文章:

android - DatabaseReference#push() 方法在不同位置有何不同?

java - 如何确保我的线程/进程在不同的内核上运行

java - 安卓 : Inform adapter that data-set has changed from a static method

java - Android 应用程序 - 带有相机应用程序的弹出菜单

java - 使用 BackgroundTask 和 Facebook 的上下文

android - 从 Android 上的 Web 服务获取请求的正确方法

java - 从处理程序 android 调用 asynctask

java - Android Studio 2.1 : error: package org. junit 不存在

android - AccountManager 删除了哪个账户

java - android 切换 View 时出现意外错误