首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Picasso库异常崩溃

Picasso库异常崩溃
EN

Stack Overflow用户
提问于 2015-12-11 09:34:55
回答 1查看 752关注 0票数 2

我对毕加索有意见,我遇到了车祸:

代码语言:javascript
运行
复制
Fatal Exception: java.util.concurrent.RejectedExecutionException: Task com.squareup.picasso.PicassoExecutorService$PicassoFutureTask@41a39a38 rejected from com.squareup.picasso.PicassoExecutorService@41acc1d0[Terminated, pool size = 0, active threads = 0, queued tasks = 0, completed tasks = 0]
   at java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(ThreadPoolExecutor.java:1967)
   at java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:782)
   at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1303)
   at com.squareup.picasso.PicassoExecutorService.submit(PicassoExecutorService.java:88)
   at com.squareup.picasso.Dispatcher.performSubmit(Dispatcher.java:202)
   at com.squareup.picasso.Dispatcher.performSubmit(Dispatcher.java:175)
   at com.squareup.picasso.Dispatcher$DispatcherHandler.handleMessage(Dispatcher.java:482)
   at android.os.Handler.dispatchMessage(Handler.java:99)
   at android.os.Looper.loop(Looper.java:153)
   at android.os.HandlerThread.run(HandlerThread.java:60)

这是我如何在onResume()中创建Picasso的:

代码语言:javascript
运行
复制
    final Picasso.Builder builder = new Picasso.Builder(context);
    builder.indicatorsEnabled(BuildConfig.DEBUG);
    builder.defaultBitmapConfig(Bitmap.Config.RGB_565);

    final long cacheSize = (long) (getAvailableRam() * 0.5F);

    builder.memoryCache(new LruCache((int) cacheSize));
    builder.listener(_listener);
    _picasso = builder.build();

在onPause()中:

代码语言:javascript
运行
复制
    if (_picasso != null) {
        _picasso.shutdown();
        _picasso = null;
    }

有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2016-04-28 11:13:17

可能是关机的问题。我建议取消所有任务,然后关闭picasso :)

查看以下内容:https://github.com/square/picasso/issues/329

简单快速解决方案.

对picasso使用单个实例

代码语言:javascript
运行
复制
  /** Stops this instance from accepting further requests. */
  public void shutdown() {
    if (this == singleton) {
      throw new UnsupportedOperationException("Default singleton instance cannot be shutdown.");
    }
    if (shutdown) {
      return;
    }
    cache.clear();
    cleanupThread.shutdown();
    stats.shutdown();
    dispatcher.shutdown();
    for (DeferredRequestCreator deferredRequestCreator : targetToDeferredRequestCreator.values()) {
      deferredRequestCreator.cancel();
    }
    targetToDeferredRequestCreator.clear();
    shutdown = true;
  }

检查:

代码语言:javascript
运行
复制
  public void cancelTag(Object tag) {
    checkMain();
    if (tag == null) {
      throw new IllegalArgumentException("Cannot cancel requests with null tag.");
    }

    List<Action> actions = new ArrayList<Action>(targetToAction.values());
    //noinspection ForLoopReplaceableByForEach
    for (int i = 0, n = actions.size(); i < n; i++) {
      Action action = actions.get(i);
      if (tag.equals(action.getTag())) {
        cancelExistingRequest(action.getTarget());
      }
    }

    List<DeferredRequestCreator> deferredRequestCreators =
        new ArrayList<DeferredRequestCreator>(targetToDeferredRequestCreator.values());
    //noinspection ForLoopReplaceableByForEach
    for (int i = 0, n = deferredRequestCreators.size(); i < n; i++) {
      DeferredRequestCreator deferredRequestCreator = deferredRequestCreators.get(i);
      if (tag.equals(deferredRequestCreator.getTag())) {
        deferredRequestCreator.cancel();
      }
    }
  }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34220217

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档