android - 如果另一个相同的线程启动,如何停止一个线程

标签 android multithreading

每次用户按下按钮时,都会执行以下代码。

new Thread() {
    @Override
    public void run() {
        aA = new albumArt(foo.getField("albumArt"),albumArt.GLOSSY_1, albumart,getBaseContext());
        runOnUiThread(new Runnable() {
            public void run() {
                    aA.placeAlbumArt();
            }
        });
    }
}.start();

这里有一个问题:

例如: 用户按下按钮 => 图像 A 开始下载。 用户按下按钮(在图像 A 完成之前)=> 图像 B 开始下载。

图像 B 完成(在图像 A 之前)下载并显示(使用 aA.placeAlbumArt())。 图片 A 完成并替换图片 B。

如果图像 A 稍后完成,我如何避免图像 A 替换图像 B?

我的意思是,如果另一个线程(图 B)在第一个线程完成之前启动,我有什么办法可以取消线程(图 A)?

这也有助于避免大量点击排队和无用地执行整个过程。我的意思是,如果用户在图像 A 完成之前按下按钮,则完成图像 A 的处理没有意义。如果用户在图像 A 完成之前按下按钮 5 次,则下载图像 A、B、C 和D. 它应该只下载 E(第五次点击)。

最佳答案

如果您要使用 AsyncTask那么你可以cancel它。您应该能够毫不费力地将 Thread 换成 AsyncTask。

关于android - 如果另一个相同的线程启动,如何停止一个线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6397698/

相关文章:

android - Android 2.3 中的“无对等证书”错误,但 4 中没有

android - 在运行时更改融合位置优先级

c++ - boost 共享指针 : Simultaneous Read Access Across Multiple Threads

c# - Lock vs. ToArray for thread safe foreach access of List collection

java - 使两个线程独立于进程,而无需 sleep /等待/通知

c++ - 跨平台线程亲和函数

c++ - 两个线程共享变量

android - 检测 BaseAdapter.notifyDataSetChanged() 何时完成

android - 方向更改时的 ImageView - Drawable 忽略 setBounds 并返回到原始状态

android - 如何在没有搜索 View 的情况下单击一组按钮后过滤回收 View