我制作了一个应用程序来跟踪一堆事件,并将它们放入用户日历中。它最多可以处理 60-70 个事件(在我的情况下,不是软件限制),事实证明,在我的手机上删除 60 个事件并插入 60 个新事件最多需要一分钟。我想知道是否有办法更快地做到这一点。
我按照https://developer.android.com/guide/topics/providers/calendar-provider上的基本指南在日历中插入和删除事件,效果很好,但速度很慢。
fun deleteEvents(eventsList: List<Event>){
val DEBUG_TAG = "DELETERT"
eventsList.forEach {
if (it._id != null) {
val eventID: Long = it._id
val deleteUri: Uri = ContentUris.withAppendedId(CalendarContract.Events.CONTENT_URI, eventID)
val rows: Int = context.contentResolver.delete(deleteUri, null, null)
Log.i(DEBUG_TAG, "Rows deleted: $rows")
}
}
}
fun insertEvents(eventsList: List<Event>, sharedPreferences: SharedPreferences){
eventsList.forEach{ event ->
if (event.start_time.isNotEmpty()) { // should not be empty, prevents crashes if it is
// check event type and if that is to be calendarized:
var putItIn = true
// (...do something which might change putItIn to false)
if (putItIn) {
val values = ContentValues().apply {
put(CalendarContract.Events.DTSTART, event.startInstant)
put(CalendarContract.Events.DTEND, event.endInstant)
put(CalendarContract.Events.TITLE, event.description)
put(CalendarContract.Events.DESCRIPTION, "${event.notes}\n" + IDENTIFIER )
put(CalendarContract.Events.CALENDAR_ID, activeCalendar!!.calID)
put(CalendarContract.Events.EVENT_TIMEZONE, "UTC")
put(CalendarContract.Events.EVENT_LOCATION, event.extra_data)
}
context.contentResolver.insert(CalendarContract.Events.CONTENT_URI, values)
}
}
else Log.d(event.description, event.event_type)
}
}
上面的函数是用一个事件列表调用的(这是一个自制的类,它包含要放入日历中的事件和其他一些东西的信息)。
就像我说的,可能需要一分钟来照顾整个一堆,这似乎很慢。我可以加快速度吗?