14

我今天注意到 PagerAdapter 被调用了很多次。缓慢滚动页面时,我数了 393。我看到了这个问题,但它并没有真正为我提供一个好的答案。

  1. 这是正常行为吗
  2. 如果是这样,为什么 getCount 方法被如此频繁地调用?

为了清楚起见,我正在寻找比所提供问题中的答案更广泛的答案。我也意识到我需要保持它的速度,并且我无法控制它的调用方式,但这不是这里的问题。

4

1 回答 1

5

正如您得出的结论,它在 onTouchEvent 中被大量使用。每当您与屏幕交互时都会调用 OnTouchEvent,这意味着触摸移动和释放事件。仅移动一个像素将导致对该方法的潜在调用。

没有更多的解释,它只是它的实现方式。通常adapter.getCount 是用List.getSize 或Cursor.getCount 之类的东西来实现的。并且几乎为零开销。如果这是一个问题,请优化您的 ListAdapter.getCount 方法,缓存计数或类似的东西。只在需要时在那里做复杂的事情并缓存结果直到它变得无效。

于 2013-07-09T06:57:37.993 回答