@@ -54,31 +54,17 @@ class SplashActivityHook : BaseHook() {
54
54
val daemonDir = context.getExternalFilesDir(" xa_daemon" )
55
55
val file = File (daemonDir, " .init_service" )
56
56
if (file.exists()) {
57
- val accessFile = RandomAccessFile (file, " rw" )
58
- val lock = accessFile.channel.tryLock()
59
- lock?.let {
60
- LogUtil .d(" 获取文件锁成功,守护进程未在运行?" )
61
- context.openJumpModuleDialog(lock, file)
62
- }
63
- }
64
- ConfUnit .versionInfoCache ? : ConfigUtil .checkUpdate(false )
65
- val conf = loadSaveConf()
66
- val currDateStr = TimeUtil .getCNDate().formatDate()
67
- conf.taskGroups.forEach { group ->
68
- group.tasks.forEach { task ->
69
- val errInfo = task.errInfo
70
- if (errInfo.dateStr.isNotEmpty() && errInfo.dateStr != currDateStr) {
71
- if (task.retryCount != 0 ) {
72
- task.retryCount = 0
73
- task.errInfo = TaskErrorInfo ()
74
- }
75
- } else if (errInfo.count >= 3 && task.retryCount < 3 ) {
76
- task.errInfo = TaskErrorInfo ()
77
- task.retryCount++
78
- LogUtil .d(" 重置task: ${task.id} retryCount: ${task.retryCount} " )
57
+ runCatching {
58
+ val accessFile = RandomAccessFile (file, " rw" )
59
+ val lock = accessFile.channel.tryLock()
60
+ lock?.let {
61
+ LogUtil .d(" 获取文件锁成功,守护进程未在运行?" )
62
+ context.openJumpModuleDialog(lock, file)
79
63
}
80
- }
64
+ }.onFailure { LogUtil .e(it, " try lock fail: " ) }
81
65
}
66
+ ConfUnit .versionInfoCache ? : ConfigUtil .checkUpdate(false )
67
+ autoResetTask(true )
82
68
}
83
69
handler.sendEmptyMessageDelayed(AUTO_EXEC , 10_000 )
84
70
}
@@ -88,11 +74,11 @@ class SplashActivityHook : BaseHook() {
88
74
val context = it.thisObject as Activity
89
75
scope.launch {
90
76
withContext(Dispatchers .IO ) {
91
- loadSaveConf()
92
77
if (ConfUnit .versionInfoCache == null
93
78
|| System .currentTimeMillis() - ConfUnit .lastFetchTime > 3 * 60 * 60_000L ) {
94
79
ConfigUtil .fetchUpdateInfo()
95
80
}
81
+ autoResetTask(false )
96
82
}
97
83
if (ConfUnit .needUpdate) {
98
84
context.openAppUpdateDialog()
@@ -107,6 +93,35 @@ class SplashActivityHook : BaseHook() {
107
93
108
94
private lateinit var appUpdateDialog: AlertDialog
109
95
96
+ private var lastAutoResetTime = 0L
97
+
98
+ private fun autoResetTask (isOnCreate : Boolean ) {
99
+ if (System .currentTimeMillis() - lastAutoResetTime < 30 * 60_000L ) {
100
+ return
101
+ }
102
+ lastAutoResetTime = System .currentTimeMillis()
103
+ val conf = loadSaveConf()
104
+ val currDateStr = TimeUtil .getCNDate().formatDate()
105
+ conf.taskGroups.forEach { group ->
106
+ group.tasks.forEach { task ->
107
+ val errInfo = task.errInfo
108
+ if (errInfo.dateStr.isNotEmpty() && errInfo.dateStr != currDateStr) {
109
+ if (task.retryCount != 0 ) {
110
+ task.retryCount = 0
111
+ task.errInfo = TaskErrorInfo ()
112
+ }
113
+ } else if (errInfo.count >= 3 ) {
114
+ if ((! isOnCreate && task.retryCount < 2 ) ||
115
+ (isOnCreate && task.retryCount < 3 )) {
116
+ task.errInfo = TaskErrorInfo ()
117
+ task.retryCount++
118
+ LogUtil .d(" 重置task: ${task.id} retryCount: ${task.retryCount} " )
119
+ }
120
+ }
121
+ }
122
+ }
123
+ }
124
+
110
125
suspend fun Activity.openAppUpdateDialog () {
111
126
withContext(Dispatchers .IO ) {
112
127
var builder: AlertDialog .Builder ? = null
0 commit comments