1

我制作了一个应用程序来跟踪一堆事件,并将它们放入用户日历中。它最多可以处理 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)
        }
    }

上面的函数是用一个事件列表调用的(这是一个自制的类,它包含要放入日历中的事件和其他一些东西的信息)。

就像我说的,可能需要一分钟来照顾整个一堆,这似乎很慢。我可以加快速度吗?

4

0 回答 0