From e331dbd3f895e1b98b1e1e8949a473faf14e6f4e Mon Sep 17 00:00:00 2001 From: lvmeng <848755140@qq.com> Date: Wed, 12 Nov 2025 09:22:05 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/sw/inbound/utils/CrashHandler.kt | 53 ++++++++++++------- 1 file changed, 34 insertions(+), 19 deletions(-) diff --git a/app/src/main/java/com/sw/inbound/utils/CrashHandler.kt b/app/src/main/java/com/sw/inbound/utils/CrashHandler.kt index ce791ed..4070230 100644 --- a/app/src/main/java/com/sw/inbound/utils/CrashHandler.kt +++ b/app/src/main/java/com/sw/inbound/utils/CrashHandler.kt @@ -45,19 +45,18 @@ class CrashHandler private constructor(private val context: Context) : } } - fun getCrashReportFiles(context: Context): Array { -// val crashDir = File(context.getExternalFilesDir(null), CRASH_REPORTS_DIR) - val crashDir = File(context.filesDir, CRASH_REPORTS_DIR) - return if (crashDir.exists() && crashDir.isDirectory) { - crashDir.listFiles { _, name -> name.endsWith(".log") } ?: emptyArray() - } else { - emptyArray() - } - } - - fun clearCrashReports(context: Context) { - getCrashReportFiles(context).forEach { it.delete() } - } + //fun getCrashReportFiles(context: Context): Array { + // val crashDir = getCrashDir() + // return if (crashDir.exists() && crashDir.isDirectory) { + // crashDir.listFiles { _, name -> name.endsWith(".log") } ?: emptyArray() + // } else { + // emptyArray() + // } + //} + // + //fun clearCrashReports(context: Context) { + // getCrashReportFiles(context).forEach { it.delete() } + //} } private val defaultHandler = Thread.getDefaultUncaughtExceptionHandler() @@ -69,6 +68,11 @@ class CrashHandler private constructor(private val context: Context) : override fun uncaughtException(thread: Thread, ex: Throwable) { handleException(thread, ex) + try { + Thread.sleep(3000) + } catch (e: InterruptedException) { + e.printStackTrace() + } // 如果系统提供了默认的异常处理器,则交给系统去结束程序 // 否则自己结束程序 defaultHandler?.uncaughtException(thread, ex) ?: run { @@ -204,11 +208,8 @@ class CrashHandler private constructor(private val context: Context) : val time = SimpleDateFormat("yyyy-MM-dd_HH-mm-ss", Locale.getDefault()).format(Date()) val fileName = "crash_$time.log" -// val crashDir = File(context.getExternalFilesDir(null), CRASH_REPORTS_DIR) - val crashDir = File(context.filesDir, CRASH_REPORTS_DIR) - if (!crashDir.exists()) { - crashDir.mkdirs() - } + val crashDir = getCrashDir() + val crashFile = File(crashDir, fileName) FileOutputStream(crashFile).use { it.write(crashInfo.toByteArray()) } @@ -222,7 +223,7 @@ class CrashHandler private constructor(private val context: Context) : * 清理旧的崩溃日志 */ fun cleanupOldCrashReports(maxAgeDays: Int = 7) { - val crashDir = File(context.filesDir, CRASH_REPORTS_DIR) + val crashDir = getCrashDir() if (!crashDir.exists() || !crashDir.isDirectory) return val now = System.currentTimeMillis() @@ -234,4 +235,18 @@ class CrashHandler private constructor(private val context: Context) : } } } + + private fun getCrashDir():File { + //val crashDir = File(context.getExternalFilesDir(null), CRASH_REPORTS_DIR) + var crashDir = File(context.filesDir, CRASH_REPORTS_DIR) + if (!crashDir.exists()) { + crashDir.mkdirs() + } + + if (!(crashDir.exists())) { + crashDir = File(context.cacheDir, CRASH_REPORTS_DIR) + } + return crashDir + } + } \ No newline at end of file