コード例 #1
0
    @Override
    public void handleMessage(Message msg) {
      if (msg.what == TASK_FINISHED) {
        mViewModificationInProgress = false;
        if (mNextClusters != null) {
          // Run the task that was queued up.
          sendEmptyMessage(RUN_TASK);
        }
        return;
      }
      removeMessages(RUN_TASK);

      if (mViewModificationInProgress) {
        // Busy - wait for the callback.
        return;
      }

      if (mNextClusters == null) {
        // Nothing to do.
        return;
      }

      RenderTask renderTask;
      synchronized (this) {
        renderTask = mNextClusters;
        mNextClusters = null;
        mViewModificationInProgress = true;
      }

      renderTask.setCallback(
          new Runnable() {
            @Override
            public void run() {
              sendEmptyMessage(TASK_FINISHED);
            }
          });
      renderTask.setProjection(mMap.getProjection());
      renderTask.setMapZoom(mMap.getCameraPosition().zoom);
      new Thread(renderTask).start();
    }