public void invalidateDanmaku(BaseDanmaku danmaku, boolean remeasure) {
   if (mHandler != null) {
     mHandler.requestCancelCaching();
     Pair<BaseDanmaku, Boolean> pair = new Pair<>(danmaku, remeasure);
     mHandler.obtainMessage(CacheHandler.REBUILD_CACHE, pair).sendToTarget();
   }
 }
 public void requestClearAll() {
   if (mHandler == null) {
     return;
   }
   mHandler.removeMessages(CacheHandler.BUILD_CACHES);
   mHandler.requestCancelCaching();
   mHandler.removeMessages(CacheHandler.CLEAR_ALL_CACHES);
   mHandler.sendEmptyMessage(CacheHandler.CLEAR_ALL_CACHES);
 }
 public void seek(long mills) {
   if (mHandler == null) return;
   mHandler.requestCancelCaching();
   mHandler.removeMessages(CacheHandler.BUILD_CACHES);
   mHandler.obtainMessage(CacheHandler.SEEK, mills).sendToTarget();
 }