diff --git a/app/src/main/java/com/gh/common/databind/BindingAdapters.java b/app/src/main/java/com/gh/common/databind/BindingAdapters.java index ccd71d880e..2c0a64d1a5 100644 --- a/app/src/main/java/com/gh/common/databind/BindingAdapters.java +++ b/app/src/main/java/com/gh/common/databind/BindingAdapters.java @@ -594,6 +594,7 @@ public class BindingAdapters { case timeout: case neterror: case diskisfull: + case diskioerror: case waiting: progressBar.setText(R.string.downloading); if (downloadEntity.isPluggable() && PackagesManager.isInstalled(downloadEntity.getPackageName())) { diff --git a/app/src/main/java/com/gh/common/simulator/SimulatorDownloadManager.kt b/app/src/main/java/com/gh/common/simulator/SimulatorDownloadManager.kt index 8ee6a87fa1..95031e5aed 100644 --- a/app/src/main/java/com/gh/common/simulator/SimulatorDownloadManager.kt +++ b/app/src/main/java/com/gh/common/simulator/SimulatorDownloadManager.kt @@ -102,6 +102,9 @@ class SimulatorDownloadManager private constructor() { DownloadStatus.diskisfull == downloadEntity.status -> { ToastUtils.showToast("存储空间已满,下载任务已暂停") } + DownloadStatus.diskioerror == downloadEntity.status -> { + ToastUtils.showToast("下载 IO 出现异常,下载任务已暂停") + } DownloadStatus.neterror == downloadEntity.status -> { ToastUtils.showToast("网络不稳定,下载任务已暂停") } @@ -301,6 +304,7 @@ class SimulatorDownloadManager private constructor() { DownloadStatus.subscribe, DownloadStatus.neterror, DownloadStatus.timeout, + DownloadStatus.diskioerror, DownloadStatus.diskisfull -> { DownloadManager.getInstance().addObserver(dataWatcher) uiExecutor.executeWithDelay(Runnable { DownloadManager.getInstance().resume(entity, true) }, 200) diff --git a/app/src/main/java/com/gh/common/util/DetailDownloadUtils.java b/app/src/main/java/com/gh/common/util/DetailDownloadUtils.java index b43505f4e0..a2b89ea3f5 100644 --- a/app/src/main/java/com/gh/common/util/DetailDownloadUtils.java +++ b/app/src/main/java/com/gh/common/util/DetailDownloadUtils.java @@ -263,6 +263,7 @@ public class DetailDownloadUtils { case redirected: case pause: case diskisfull: + case diskioerror: case overflow: String downloadingText = "游戏加载中 " + downloadEntity.getPercent() + "%"; String resumeText = "继续加载 " + downloadEntity.getPercent() + "%"; @@ -350,6 +351,7 @@ public class DetailDownloadUtils { case neterror: case subscribe: case diskisfull: + case diskioerror: case pause: viewHolder.mDownloadPb.setText("继续加载 " + viewHolder.downloadEntity.getPercent() + "%"); viewHolder.mDownloadPb.setButtonStyle(DownloadButton.ButtonStyle.DOWNLOADING_NORMAL); diff --git a/app/src/main/java/com/gh/common/util/DownloadItemUtils.kt b/app/src/main/java/com/gh/common/util/DownloadItemUtils.kt index 213c608f46..e238eebe16 100644 --- a/app/src/main/java/com/gh/common/util/DownloadItemUtils.kt +++ b/app/src/main/java/com/gh/common/util/DownloadItemUtils.kt @@ -312,6 +312,7 @@ object DownloadItemUtils { DownloadStatus.neterror, DownloadStatus.subscribe, DownloadStatus.diskisfull, + DownloadStatus.diskioerror, DownloadStatus.overflow -> { buttonStyle = DownloadButton.ButtonStyle.NORMAL setText(R.string.resume) @@ -431,6 +432,7 @@ object DownloadItemUtils { DownloadStatus.pause, DownloadStatus.timeout, DownloadStatus.neterror, + DownloadStatus.diskioerror, DownloadStatus.diskisfull, DownloadStatus.subscribe, DownloadStatus.overflow -> { diff --git a/app/src/main/java/com/gh/common/util/DownloadNotificationHelper.kt b/app/src/main/java/com/gh/common/util/DownloadNotificationHelper.kt index 33a2f7b659..20db877645 100644 --- a/app/src/main/java/com/gh/common/util/DownloadNotificationHelper.kt +++ b/app/src/main/java/com/gh/common/util/DownloadNotificationHelper.kt @@ -99,6 +99,7 @@ object DownloadNotificationHelper { DownloadStatus.subscribe, DownloadStatus.timeout, DownloadStatus.diskisfull, + DownloadStatus.diskioerror, DownloadStatus.neterror -> builder.setContentText("已暂停,连接WiFi自动下载") else -> builder.setContentText("暂停中") } diff --git a/app/src/main/java/com/gh/common/util/DownloadObserver.kt b/app/src/main/java/com/gh/common/util/DownloadObserver.kt index 41237ac375..43920fac9b 100644 --- a/app/src/main/java/com/gh/common/util/DownloadObserver.kt +++ b/app/src/main/java/com/gh/common/util/DownloadObserver.kt @@ -88,6 +88,7 @@ object DownloadObserver { return } else if (DownloadStatus.neterror == downloadEntity.status || DownloadStatus.timeout == downloadEntity.status + || DownloadStatus.diskioerror == downloadEntity.status || DownloadStatus.diskisfull == downloadEntity.status) { if (downloadEntity.meta[Constants.MARK_RETRY_DOWNLOAD].isNullOrEmpty() && NetworkUtils.isWifiConnected(HaloApp.getInstance().application) @@ -101,6 +102,8 @@ object DownloadObserver { } else { if (DownloadStatus.diskisfull == downloadEntity.status) { ToastUtils.toast("磁盘已满,请清理空间后重试下载") + } else if (DownloadStatus.diskioerror == downloadEntity.status) { + ToastUtils.toast("磁盘 IO 异常,请稍后重试") } else { ToastUtils.toast("网络不稳定,下载任务已暂停") } diff --git a/app/src/main/java/com/gh/download/DownloadDataHelper.kt b/app/src/main/java/com/gh/download/DownloadDataHelper.kt index 8219dfc306..6b09c37ae1 100644 --- a/app/src/main/java/com/gh/download/DownloadDataHelper.kt +++ b/app/src/main/java/com/gh/download/DownloadDataHelper.kt @@ -61,6 +61,7 @@ object DownloadDataHelper { || status == DownloadStatus.neterror || status == DownloadStatus.timeout || status == DownloadStatus.diskisfull + || status == DownloadStatus.diskioerror ) { "暂停下载-连上WiFi自动下载" } else if (status == DownloadStatus.done) { diff --git a/app/src/main/java/com/gh/gamecenter/download/GameDownloadFragment.java b/app/src/main/java/com/gh/gamecenter/download/GameDownloadFragment.java index 6cf4d2a3ef..a46be4d659 100644 --- a/app/src/main/java/com/gh/gamecenter/download/GameDownloadFragment.java +++ b/app/src/main/java/com/gh/gamecenter/download/GameDownloadFragment.java @@ -163,7 +163,8 @@ public class GameDownloadFragment extends BaseFragment implements View.OnClickLi } } if (downloadEntity.getStatus() == DownloadStatus.neterror - || downloadEntity.getStatus() == DownloadStatus.diskisfull) { + || downloadEntity.getStatus() == DownloadStatus.diskisfull + || downloadEntity.getStatus() == DownloadStatus.diskioerror) { adapter.notifyItemChanged(adapter.getBase()); } } else { diff --git a/app/src/main/java/com/gh/gamecenter/download/GameDownloadFragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/download/GameDownloadFragmentAdapter.java index 26658464b2..d642b07455 100644 --- a/app/src/main/java/com/gh/gamecenter/download/GameDownloadFragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/download/GameDownloadFragmentAdapter.java @@ -239,6 +239,7 @@ class GameDownloadFragmentAdapter extends BaseRecyclerAdapter { || status.equals(DownloadStatus.timeout) || status.equals(DownloadStatus.neterror) || status.equals(DownloadStatus.diskisfull) + || status.equals(DownloadStatus.diskioerror) || status.equals(DownloadStatus.subscribe)) { viewHolder.binding.dmItemTvStartorpause.setText(R.string.resume); viewHolder.binding.dmItemTvStartorpause.setButtonStyle(DownloadButton.ButtonStyle.NORMAL); diff --git a/app/src/main/java/com/gh/gamecenter/manager/UpdateManager.java b/app/src/main/java/com/gh/gamecenter/manager/UpdateManager.java index f2d2b5c6f6..7c4c5b3e91 100644 --- a/app/src/main/java/com/gh/gamecenter/manager/UpdateManager.java +++ b/app/src/main/java/com/gh/gamecenter/manager/UpdateManager.java @@ -160,6 +160,8 @@ public class UpdateManager { Utils.toast(mApplicationContext, "网络错误,请稍后重试"); } else if (DownloadStatus.diskisfull.equals(downloadEntity.getStatus())) { Utils.toast(mApplicationContext, "磁盘已满,请清理后重试"); + } else if (DownloadStatus.diskioerror.equals(downloadEntity.getStatus())) { + Utils.toast(mApplicationContext, "磁盘 IO 异常,请稍后重试"); } else if (DownloadStatus.timeout.equals(downloadEntity.getStatus())) { Utils.toast(mApplicationContext, "请求超时,请稍后重试"); } else if (DownloadStatus.notfound.equals(downloadEntity.getStatus())) { diff --git a/app/src/main/java/com/gh/ndownload/NDownloadBridge.kt b/app/src/main/java/com/gh/ndownload/NDownloadBridge.kt index 0b37db83ba..4ed4fba4ae 100644 --- a/app/src/main/java/com/gh/ndownload/NDownloadBridge.kt +++ b/app/src/main/java/com/gh/ndownload/NDownloadBridge.kt @@ -81,6 +81,13 @@ object NDownloadBridge : InnerDownloadListener, IErrorRetryHandler { DownloadDao.getInstance(HaloApp.getInstance()).update(downloadEntity, false) } + DownloadError.DISK_IO_ERROR -> { + downloadEntity.status = com.lightgame.download.DownloadStatus.diskioerror + DownloadManager.getInstance().onTaskError(downloadEntity) + NDownloadService.getService()?.removeFromDataChangerAndResumeWaitingTask(downloadEntity, true) + + DownloadDao.getInstance(HaloApp.getInstance()).update(downloadEntity, false) + } DownloadError.DISK_IS_FULL -> { downloadEntity.status = com.lightgame.download.DownloadStatus.diskisfull NDownloadService.getService()?.removeFromDataChangerAndResumeWaitingTask(downloadEntity, true) diff --git a/app/src/main/java/com/gh/ndownload/NDownloadService.java b/app/src/main/java/com/gh/ndownload/NDownloadService.java index 194f32c863..a4b7622b4f 100644 --- a/app/src/main/java/com/gh/ndownload/NDownloadService.java +++ b/app/src/main/java/com/gh/ndownload/NDownloadService.java @@ -95,6 +95,7 @@ public class NDownloadService extends Service { case pause: case timeout: case neterror: + case diskioerror: case diskisfull: pauseDownload(entry); break; diff --git a/app/src/main/java/com/gh/vspace/HomeRecentVGameViewHolder.kt b/app/src/main/java/com/gh/vspace/HomeRecentVGameViewHolder.kt index a5e4895682..0f387d1e44 100644 --- a/app/src/main/java/com/gh/vspace/HomeRecentVGameViewHolder.kt +++ b/app/src/main/java/com/gh/vspace/HomeRecentVGameViewHolder.kt @@ -189,6 +189,7 @@ class HomeRecentVGameAdapter(context: Context) : DiffUtilAdapter( DownloadStatus.unqualified, DownloadStatus.notfound, DownloadStatus.diskisfull, + DownloadStatus.diskioerror, DownloadStatus.unavailable, DownloadStatus.overflow -> { binding.root.setOnClickListener { diff --git a/app/src/main/java/com/gh/vspace/VDownloadManagerAdapter.kt b/app/src/main/java/com/gh/vspace/VDownloadManagerAdapter.kt index 2329399b52..7c85b36391 100644 --- a/app/src/main/java/com/gh/vspace/VDownloadManagerAdapter.kt +++ b/app/src/main/java/com/gh/vspace/VDownloadManagerAdapter.kt @@ -499,6 +499,7 @@ class VDownloadManagerAdapter( DownloadStatus.timeout, DownloadStatus.neterror, DownloadStatus.subscribe, + DownloadStatus.diskioerror, DownloadStatus.diskisfull, DownloadStatus.overflow -> { btnText = context.getString(R.string.resume) diff --git a/app/src/main/java/com/gh/vspace/VGameItemData.kt b/app/src/main/java/com/gh/vspace/VGameItemData.kt index 3f74d40e92..2883da9175 100644 --- a/app/src/main/java/com/gh/vspace/VGameItemData.kt +++ b/app/src/main/java/com/gh/vspace/VGameItemData.kt @@ -55,6 +55,7 @@ data class VGameItemData( DownloadStatus.cancel, DownloadStatus.timeout, DownloadStatus.neterror, + DownloadStatus.diskioerror, DownloadStatus.diskisfull, DownloadStatus.hijack, DownloadStatus.uncertificated, diff --git a/app/src/main/java/com/gh/vspace/VSpaceDialogFragment.kt b/app/src/main/java/com/gh/vspace/VSpaceDialogFragment.kt index f221204b96..651d0d33a2 100644 --- a/app/src/main/java/com/gh/vspace/VSpaceDialogFragment.kt +++ b/app/src/main/java/com/gh/vspace/VSpaceDialogFragment.kt @@ -183,6 +183,7 @@ class VSpaceDialogFragment : BaseDraggableDialogFragment() { overflow, timeout, neterror, + diskioerror, diskisfull, waiting, subscribe -> { diff --git a/app/src/main/java/com/gh/vspace/VSpaceLoadingFragment.kt b/app/src/main/java/com/gh/vspace/VSpaceLoadingFragment.kt index 7a027c2c16..1c7a09e570 100644 --- a/app/src/main/java/com/gh/vspace/VSpaceLoadingFragment.kt +++ b/app/src/main/java/com/gh/vspace/VSpaceLoadingFragment.kt @@ -49,6 +49,7 @@ class VSpaceLoadingFragment : BaseFragment() { notfound, neterror, diskisfull, + diskioerror, overflow -> requireActivity().finish() unqualified -> { ToastUtils.toast("暂不支持未成年人下载") diff --git a/libraries/LGLibrary b/libraries/LGLibrary index 077b43ed8a..087ef0f3a8 160000 --- a/libraries/LGLibrary +++ b/libraries/LGLibrary @@ -1 +1 @@ -Subproject commit 077b43ed8a8ae736d3af72d5b74cfec80a16ea9a +Subproject commit 087ef0f3a814b6d92f5ab4b14a41f88f8a9afa48 diff --git a/ndownload b/ndownload index 89f0ede089..44fbfe4fca 160000 --- a/ndownload +++ b/ndownload @@ -1 +1 @@ -Subproject commit 89f0ede089304dac02538dd58fb7c3d0f18a5004 +Subproject commit 44fbfe4fca91bed05caa02d01ee26ed1e6b39200