@Override
 public void onBackPressed() {
   if (originFavorite != isFavorite && fromPosition >= 0) {
     Intent intent = new Intent();
     intent.putExtra("position", fromPosition);
     setResult(RESULT_HAVE_FAV, intent);
   }
   super.onBackPressed();
 }
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_book_details);

    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    collapsingToolbar = $(R.id.collapsing_toolbar);

    Intent intent = getIntent();
    if (Intent.ACTION_VIEW.equals(intent.getAction())) {
      book = new Book();
      String url = intent.getData().toString();
      if (url.endsWith("/")) url = url.substring(0, url.length() - 1);
      String bid = url.substring(url.lastIndexOf("/") + 1, url.length());
      Log.i("TAG", "url get id:" + bid);
      book.bookId = bid;
      fromPosition = -1;
      isFromExternal = true;
    } else {
      book = Book.toBookFromJson(intent.getStringExtra(EXTRA_BOOK_DATA));
      fromPosition = intent.getIntExtra(EXTRA_POSITION, 0);

      collapsingToolbar.setTitle(book.title);
    }

    mFileCacheManager = FileCacheManager.getInstance(getApplicationContext());

    isFavorite =
        originFavorite =
            FavoritesManager.getInstance(getApplicationContext()).contains(book.bookId);

    mImageView = $(R.id.app_bar_background);
    ViewCompat.setTransitionName(mImageView, TRANSITION_NAME_IMAGE);

    mFAB = $(R.id.fab);
    mTitleText = $(R.id.tv_title);
    mTagsLayout = $(R.id.book_tags_layout);
    mContentView = $(R.id.book_content);
    mProgressWheel = $(R.id.wheel_progress);
    mPreviewList = $(R.id.preview_list);

    mPreviewList.setHasFixedSize(true);
    mPreviewList.setLayoutManager(
        new GridLayoutManager(getApplicationContext(), 2, LinearLayoutManager.HORIZONTAL, false));

    FileCacheManager cm = FileCacheManager.getInstance(getApplicationContext());
    if (book.galleryId != null) {
      if (cm.cacheExistsUrl(Constants.CACHE_COVER, book.bigCoverImageUrl)) {
        if (cm.cacheExistsUrl(
            Constants.CACHE_PAGE_IMG, NHentaiUrl.getOriginPictureUrl(book.galleryId, "1"))) {
          Picasso.with(getApplicationContext())
              .load(
                  cm.getBitmapUrlFile(
                      Constants.CACHE_PAGE_IMG,
                      NHentaiUrl.getOriginPictureUrl(book.galleryId, "1")))
              .fit()
              .centerCrop()
              .into(mImageView);
        } else {
          Picasso.with(getApplicationContext())
              .load(cm.getBitmapUrlFile(Constants.CACHE_COVER, book.bigCoverImageUrl))
              .fit()
              .centerCrop()
              .into(mImageView);
        }
      } else {
        if (cm.cacheExistsUrl(Constants.CACHE_THUMB, book.previewImageUrl)) {
          Picasso.with(getApplicationContext())
              .load(cm.getBitmapUrlFile(Constants.CACHE_THUMB, book.previewImageUrl))
              .fit()
              .centerCrop()
              .into(mImageView);
        } else {
          int color = ColorGenerator.MATERIAL.getColor(book.title);
          TextDrawable drawable =
              TextDrawable.builder().buildRect(book.title.substring(0, 1), color);
          mImageView.setImageDrawable(drawable);
        }
        new CoverTask().execute(book);
      }
    }

    if (book.pageCount != 0) {
      mContentView.setVisibility(View.GONE);
      mProgressWheel.setVisibility(View.VISIBLE);
      mProgressWheel.spin();
      new Thread() {
        @Override
        public void run() {
          try {
            Thread.sleep(250);
          } catch (InterruptedException e) {
            e.printStackTrace();
          }
          runOnUiThread(
              new Runnable() {
                @Override
                public void run() {
                  updateUIContent();
                }
              });
        }
      }.start();
    } else {
      startBookGet();
    }

    if (!isFromExternal) checkIsDownloaded();
  }