Skip to content

Instantly share code, notes, and snippets.

View matthewrdev's full-sized avatar
🧗

Matthew Robbins matthewrdev

🧗
View GitHub Profile
using System;
using System.Globalization;
using System.Linq;
using System.Threading;
using Java.Util;
using MyApp.Droid;
using MyApp.il8n;
using Xamarin.Forms;
[assembly: Dependency(typeof(Localize))]
@matthewrdev
matthewrdev / iOS.Localise.cs
Last active April 2, 2018 13:04
iOS - Localise.cs
using System;
using System.Globalization;
using System.Threading;
using Foundation;
using MyApp.il8n;
using MyApp.iOS;
using Xamarin.Forms;
[assembly: Dependency(typeof(Localize))]
using System;
using System.Globalization;
namespace MyApp.il8n
{
public interface ILocalize
{
CultureInfo GetCurrentCultureInfo();
void SetLocale();
@matthewrdev
matthewrdev / AndroidEnvironment.txt
Last active August 28, 2019 01:12
Is Mono's logging cluttering up your Android apps logs? Drop this into your project to snuff out those logs!
# See: http://developer.xamarin.com/guides/android/advanced_topics/garbage_collection/#Configuration
MONO_GC_PARAMS=bridge-implementation=tarjan,nursery-size=32m,soft-heap-limit=512m,evacuation-threshold=80
# See: http://www.mono-project.com/docs/advanced/runtime/logging-runtime-events/#trace-levels
MONO_LOG_LEVEL=info
# See: http://www.mono-project.com/docs/advanced/runtime/logging-runtime-events/#trace-filters
MONO_LOG_MASK=gc
@matthewrdev
matthewrdev / Profiler.cs
Last active April 2, 2020 14:39
A simple and lean profiler that measures a code section using the IDisposable pattern.
using System;
using System.Diagnostics;
using System.IO;
using System.Runtime.CompilerServices;
namespace MFractor.Utilities
{
public class Profiler : IDisposable
{
readonly string Message;
@matthewrdev
matthewrdev / PeerConnectionHelper.cs
Last active November 15, 2021 23:59
Utility class to detect severed peer connections in Xamarin.Android.
/// <summary>
/// Helper class to detect when .NET objects with a Java peer object have been "severed".
/// <para/>
/// Peer objects are .NET types which implement IJavaObject , e.g. all Java.Lang.Object and Java.Lang.Throwable subclasses.
/// Instances of these types have two "halfs" a managed peer and a native peer.
/// <list type="bullet">
/// <item>The managed peer is an instance of the C# class.</item>
/// <item>The native peer is an instance of a Java class within the Android runtime VM, and the C# IJavaObject.Handle property contains a JNI global reference to the native peer.</item>
/// </list>
/// There are two types of native peers: