当用户在我的应用程序中移动时,我会在列表中收集关键事件。当用户退出应用程序时,我想:
我将所有内容都放在一个函数中并进行了单元测试,只要应用程序仍然处于活动状态,它就可以正常工作。但是:
我之前就听说过“尽管不得扰乱生命周期事件”的法令,所以我想这是一个确认......
您建议我如何完成此操作(当用户退出应用程序时将文件上传到云端)?它不需要立即发生,它只需要最终发生。
谢谢!
也许尝试使用 WorkManager。它可以在后台工作
class FileUploadWorker(context: Context, params: WorkerParameters) : Worker(context, params) {
override fun doWork(): Result {
val filePath = inputData.getString("filePath") ?: return Result.failure()
return try {
val file = File(filePath)
if (file.exists()) {
uploadToCloud(file)
Result.success()
} else {
Result.failure()
}
} catch (e: Exception) {
e.printStackTrace()
Result.retry()
}
}
private fun uploadToCloud(file: File) {
// ...
}
}
并从 Activity 启动它
onStop
override fun onStop() {
super.onStop()
val filePath = saveEventsToFile()
val data = Data.Builder()
.putString("filePath", filePath)
.build()
val uploadWorkRequest = OneTimeWorkRequestBuilder<FileUploadWorker>()
.setInputData(data)
.build()
WorkManager.getInstance(applicationContext).enqueue(uploadWorkRequest)
}
private fun saveEventsToFile(): String {
val filePath = "${filesDir.path}/events.json"
return filePath
}