小编und*_*ned的帖子

安卓:java.util.concurrent.ThreadPoolExecutor中

在我的应用程序中有RecyclerView大量的图像.当用户使用以下代码滚动RecyclerView时,会加载图像:

    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB)
        loader.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR,url);
    else
        loader.execute(url);
Run Code Online (Sandbox Code Playgroud)

不幸的是,有时当用户快速滚动时会发生此错误:

Task android.os.AsyncTask$3@73f1d84 rejected from 
java.util.concurrent.ThreadPoolExecutor@8f5f96d[Running, pool size = 9, 
active threads = 9, queued tasks = 128, completed tasks = 279]
Run Code Online (Sandbox Code Playgroud)

有没有办法检测poolExecutor是否已满并跳过图像加载?

全图像类:

public class Image extends ImageView {
private AsyncTask<String,Integer,Bitmap> loader;

public Image(Context context) {
    super(context);
    this.setScaleType(ScaleType.FIT_XY);
}

public Image(Context context, AttributeSet attrs) {
    super(context, attrs);
    this.setScaleType(ScaleType.FIT_XY);
}

public void loadURL(String url) {
    if(loader!=null)
        loader.cancel(true);
    loader=new AsyncTask<String, Integer, Bitmap>() {
        @Override
        protected Bitmap doInBackground(String... params) {
            URL url = …
Run Code Online (Sandbox Code Playgroud)

multithreading android

9
推荐指数
2
解决办法
938
查看次数

标签 统计

android ×1

multithreading ×1