From 2dd26e9b00c2d162a1ad6a33b6493b5b0de8ce26 Mon Sep 17 00:00:00 2001 From: seven332 Date: Wed, 16 Mar 2016 13:43:38 +0800 Subject: [PATCH] Do not stop or delete download items through DownloadService --- .../ehviewer/download/DownloadManager.java | 10 +-- .../ehviewer/ui/scene/DownloadsScene.java | 65 +++++++++++-------- 2 files changed, 43 insertions(+), 32 deletions(-) diff --git a/app/src/main/java/com/hippo/ehviewer/download/DownloadManager.java b/app/src/main/java/com/hippo/ehviewer/download/DownloadManager.java index 983c41fe6..03ce2a70c 100644 --- a/app/src/main/java/com/hippo/ehviewer/download/DownloadManager.java +++ b/app/src/main/java/com/hippo/ehviewer/download/DownloadManager.java @@ -382,7 +382,7 @@ public class DownloadManager implements SpiderQueen.OnSpiderListener { } - void stopDownload(long gid) { + public void stopDownload(long gid) { DownloadInfo info = stopDownloadInternal(gid); if (info != null) { // Update listener @@ -412,7 +412,7 @@ public class DownloadManager implements SpiderQueen.OnSpiderListener { } } - void stopRangeDownload(LongList gidList) { + public void stopRangeDownload(LongList gidList) { stopRangeDownloadInternal(gidList); // Update listener @@ -424,7 +424,7 @@ public class DownloadManager implements SpiderQueen.OnSpiderListener { ensureDownload(); } - void stopAllDownload() { + public void stopAllDownload() { // Stop all in wait list for (DownloadInfo info : mWaitList) { info.state = DownloadInfo.STATE_NONE; @@ -442,7 +442,7 @@ public class DownloadManager implements SpiderQueen.OnSpiderListener { } } - void deleteDownload(long gid) { + public void deleteDownload(long gid) { stopDownloadInternal(gid); DownloadInfo info = mAllInfoMap.get(gid); if (info != null) { @@ -471,7 +471,7 @@ public class DownloadManager implements SpiderQueen.OnSpiderListener { } } - void deleteRangeDownload(LongList gidList) { + public void deleteRangeDownload(LongList gidList) { stopRangeDownloadInternal(gidList); for (int i = 0, n = gidList.size(); i < n; i++) { diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/DownloadsScene.java b/app/src/main/java/com/hippo/ehviewer/ui/scene/DownloadsScene.java index 86dba97af..849ab592a 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/DownloadsScene.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/DownloadsScene.java @@ -96,6 +96,8 @@ public class DownloadsScene extends ToolbarScene Whole life cycle ---------------*/ @Nullable + private DownloadManager mDownloadManager; + @Nullable private String mLabel; @Nullable private List mList; @@ -134,8 +136,8 @@ public class DownloadsScene extends ToolbarScene handleArguments(getArguments()); - DownloadManager manager = EhApplication.getDownloadManager(getContext()); - manager.addDownloadInfoListener(this); + mDownloadManager = EhApplication.getDownloadManager(getContext()); + mDownloadManager.addDownloadInfoListener(this); if (savedInstanceState == null) { onInit(); @@ -148,19 +150,28 @@ public class DownloadsScene extends ToolbarScene public void onDestroy() { super.onDestroy(); mList = null; - DownloadManager manager = EhApplication.getDownloadManager(getContext()); + + DownloadManager manager = mDownloadManager; + if (null == manager) { + manager = EhApplication.getDownloadManager(getContext()); + } else { + mDownloadManager = null; + } manager.removeDownloadInfoListener(this); } private void updateForLabel() { - DownloadManager manager = EhApplication.getDownloadManager(getContext()); + if (null == mDownloadManager) { + return; + } + if (mLabel == null) { - mList = manager.getDefaultDownloadInfoList(); + mList = mDownloadManager.getDefaultDownloadInfoList(); } else { - mList = manager.getLabelDownloadInfoList(mLabel); + mList = mDownloadManager.getLabelDownloadInfoList(mLabel); if (mList == null) { mLabel = null; - mList = manager.getDefaultDownloadInfoList(); + mList = mDownloadManager.getDefaultDownloadInfoList(); } } @@ -290,9 +301,9 @@ public class DownloadsScene extends ToolbarScene return true; } case R.id.action_stop_all: { - Intent intent = new Intent(getActivity(), DownloadService.class); - intent.setAction(DownloadService.ACTION_STOP_ALL); - getActivity().startService(intent); + if (null != mDownloadManager) { + mDownloadManager.stopAllDownload(); + } return true; } } @@ -326,7 +337,11 @@ public class DownloadsScene extends ToolbarScene startScene(new Announcer(DownloadLabelsScene.class)); return true; case R.id.action_default_download_label: - DownloadManager dm = EhApplication.getDownloadManager(getContext()); + DownloadManager dm = mDownloadManager; + if (null == dm) { + return true; + } + List list = dm.getLabelList(); final String[] items = new String[list.size() + 2]; items[0] = getString(R.string.let_me_select); @@ -513,10 +528,9 @@ public class DownloadsScene extends ToolbarScene break; } case 2: { // Stop - Intent intent = new Intent(getActivity(), DownloadService.class); - intent.setAction(DownloadService.ACTION_STOP_RANGE); - intent.putExtra(DownloadService.KEY_GID_LIST, gidList); - getActivity().startService(intent); + if (null != mDownloadManager) { + mDownloadManager.stopRangeDownload(gidList); + } // Cancel check mode recyclerView.outOfCustomChoiceMode(); break; @@ -733,10 +747,9 @@ public class DownloadsScene extends ToolbarScene } // Delete - Intent intent = new Intent(getActivity(), DownloadService.class); - intent.setAction(DownloadService.ACTION_DELETE); - intent.putExtra(DownloadService.KEY_GID, mGalleryInfo.gid); - getActivity().startService(intent); + if (null != mDownloadManager) { + mDownloadManager.deleteDownload(mGalleryInfo.gid); + } // Delete image files boolean checked = mBuilder.isChecked(); @@ -776,10 +789,9 @@ public class DownloadsScene extends ToolbarScene } // Delete - Intent intent = new Intent(getActivity(), DownloadService.class); - intent.setAction(DownloadService.ACTION_DELETE_RANGE); - intent.putExtra(DownloadService.KEY_GID_LIST, mGidList); - getActivity().startService(intent); + if (null != mDownloadManager) { + mDownloadManager.deleteRangeDownload(mGidList); + } // Delete image files boolean checked = mBuilder.isChecked(); @@ -899,10 +911,9 @@ public class DownloadsScene extends ToolbarScene intent.putExtra(DownloadService.KEY_GALLERY_INFO, list.get(index)); getActivity().startService(intent); } else if (stop == v) { - Intent intent = new Intent(getActivity(), DownloadService.class); - intent.setAction(DownloadService.ACTION_STOP); - intent.putExtra(DownloadService.KEY_GID, list.get(index).gid); - getActivity().startService(intent); + if (null != mDownloadManager) { + mDownloadManager.stopDownload(list.get(index).gid); + } } else if (delete == v) { GalleryInfo galleryInfo = list.get(index); CheckBoxDialogBuilder builder = new CheckBoxDialogBuilder(getContext(),