Skip to content

Instantly share code, notes, and snippets.

@polson
polson / UIJobScheduler.kt
Last active April 28, 2020 23:27
A job scheduler to process UI jobs without skipping frames
object UIJobScheduler {
private const val MAX_JOB_TIME_MS: Float = 4f
private var elapsed = 0L
private val jobQueue = ArrayDeque<() -> Unit>()
private val isOverMaxTime get() = elapsed > MAX_JOB_TIME_MS * 1_000_000
private val handler = Handler()
fun submitJob(job: () -> Unit) {
jobQueue.add(job)
@polson
polson / SmoothListAdapter.kt
Last active December 6, 2020 07:23
A ListAdapter that pre-caches its views on creation
class SmoothListAdapter(val context: Context) : ListAdapter<ListItem, ListItemViewHolder>(MyDiffCallback()) {
data class ListItem(val id: String, val text: String)
class ListItemViewHolder(view: View) : ViewHolder(view) {
fun populateFrom(listItem: ListItem) {
//TODO: populate your view
}
}
@polson
polson / Oauth1SigningInterceptor.kt
Last active January 30, 2023 13:36 — forked from JakeWharton/Oauth1SigningInterceptor.java
An OkHttp interceptor written in Kotlin that does OAuth 1.0a signing
/*
* Copyright (C) 2015 Jake Wharton
* Modified work Copyright 2019 Phil Olson
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*