为了账号安全,请及时绑定邮箱和手机立即绑定

求告知mPoolThread的作用

private Thread mPoolThread;  //加了此线程  图片浏览变得流畅了  不知道为啥~~

// loop thread
  mPoolThread = new Thread()
  {
   @Override
   public void run()
   {
    Looper.prepare();


    mPoolThreadHander = new Handler()
    {
     @Override
     public void handleMessage(Message msg)
     {
      mThreadPool.execute(getTask());
      try
      {
       mPoolSemaphore.acquire();
      } catch (InterruptedException e)
      {
      }
     }
    };
    // 释放一个信号量
    mSemaphore.release();
    Looper.loop();
   }
  };
  mPoolThread.start();

为什么要开启一个新线程去初始化mPoolThreadHander 啊?

不能直接初始化吗

我试了下 如果不开启新线程去初始化mPoolThreadHander  滑动滚轮时会有点卡

谁能告诉我为什么吗?

正在回答

2 回答

  mThreadPool.execute(getTask());是一个比较耗时的操作。我测试了一下,最多需要3毫秒,当你滚动屏幕的时候,如果恰好在做这个操作,那会有卡顿的。

如果不开启新线程去初始化mPoolThreadHander,就相当于你在UI线程做  mThreadPool.execute(getTask());为了不卡顿,所以把这个有些耗时的操作放在了一个新线程中。使用mPoolThreadHander是希望子线程可以有Handler机制,其实使用while(true) 也是一样的。


0 回复 有任何疑惑可以回复我~
#1

qq_凈鈊奮_0

我的 mThreadPool.execute(getTask());出现了空指针怎么回事呢?
2017-08-10 回复 有任何疑惑可以回复我~

1111

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Android-仿微信图片选择器
  • 参与学习       29299    人
  • 解答问题       88    个

微信中的图片选择器综合案例不容错过,整体思路值得一学

进入课程

求告知mPoolThread的作用

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信