Skip to content

Instantly share code, notes, and snippets.

@MikeFot
MikeFot / LifecycleTestOwner
Created September 29, 2021 10:59
Helper for ViewModel / Observable Tests
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.LifecycleRegistry
class LifecycleTestOwner : LifecycleOwner {
private val registry = LifecycleRegistry(this)
override fun getLifecycle(): Lifecycle {
return registry
class AppOnVisibilityChangeListener() : LifecycleObserver {
var isVisible = MutableLiveData<Boolean>()
init {
AppLog.d("Initialising")
ProcessLifecycleOwner.get().lifecycle.addObserver(this)
}
@OnLifecycleEvent(Lifecycle.Event.ON_STOP)
@MikeFot
MikeFot / AppActivityLifecycleCallbacks.java
Created March 22, 2019 11:46
Activity Lifecycle Callbacks (for when you join a new company and you have no idea what fragment you are looking at)
import android.app.Activity;
import android.app.Application;
import android.content.Context;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import timber.log.Timber;
import com.crashlytics.android.Crashlytics
import com.squareup.leakcanary.AnalysisResult
import com.squareup.leakcanary.DisplayLeakService
import com.squareup.leakcanary.HeapDump
import io.fabric.sdk.android.Fabric
import timber.log.Timber
class LeakUploadService : DisplayLeakService() {
override fun afterDefaultHandling(
import com.google.gson.Gson
abstract class BaseJsonTest {
val serializer = Serializer()
inner class Serializer {
private val gson = Gson()
import android.os.Bundle
import android.os.Parcel
import android.os.Parcelable
/**
* Inspired from [here](https://gist.github.com/tomaszpolanski/92a2eada1e06e4a4c71abb298d397173#file-utils-kt)
*/
abstract class BaseParcelableTest {
@MikeFot
MikeFot / LiveSharedPreference.java
Last active March 22, 2018 09:56
LiveSharedPreference (Android) for use with ViewModel
import android.arch.lifecycle.MutableLiveData;
import android.content.SharedPreferences;
public class LiveSharedPreference<T> extends MutableLiveData<T> {
private final SharedPreferences mSharedPreferences;
private final SharedPreferences.OnSharedPreferenceChangeListener mListener;
public LiveSharedPreference(final String preferenceKey,
@MikeFot
MikeFot / Material Colors
Created January 25, 2017 11:58
Material Colors XML for Android
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!--reds-->
<color name="md_red_50">#FFEBEE</color>
<color name="md_red_100">#FFCDD2</color>
<color name="md_red_200">#EF9A9A</color>
<color name="md_red_300">#E57373</color>
<color name="md_red_400">#EF5350</color>
<color name="md_red_500">#F44336</color>
<color name="md_red_600">#E53935</color>
import android.annotation.TargetApi;
import android.content.Context;
import android.os.Build;
import android.os.Handler;
import android.os.Looper;
import android.util.AttributeSet;
import android.widget.TextView;
/**
* Written by Michael Fotiadis