/// <summary> /// Initializes the singleton resource, assuming the Ultraviolet context is currently in a valid state. /// </summary> /// <returns><see langword="true"/> if the instance was successfully initialized; otherwise, <see langword="false"/>.</returns> public Boolean InitializeResource() { if (initialized) { return(true); } var uv = UltravioletContext.RequestCurrent(); if (uv == null || uv.Disposing || uv.Disposed) { return(false); } if (resource == null || resource.Ultraviolet != uv) { if (ShouldInitializeResource(uv)) { resource = initializer(uv); } } initialized = true; return(true); }
/// <inheritdoc/> protected override void OnRestart() { var uv = UltravioletContext.RequestCurrent(); if (uv != null && !uv.Disposed) { var data = uv.Messages.CreateMessageData <AndroidLifecycleMessageData>(); data.Activity = this; uv.Messages.Publish(UltravioletMessages.AndroidActivityRestart, data); } base.OnRestart(); }
/// <inheritdoc/> protected override void OnDestroy() { var uv = UltravioletContext.RequestCurrent(); if (uv != null && !uv.Disposed) { /*TODO * var data = uv.Messages.CreateMessageData<AndroidLifecycleMessageData>(); * data.Activity = this; * uv.Messages.Publish(UltravioletMessages.AndroidActivityDestroy, data); */ } base.OnDestroy(); }
/// <summary> /// Initializes the singleton resource, assuming the Ultraviolet context is currently in a valid state. /// </summary> public void InitializeResource() { var uv = UltravioletContext.RequestCurrent(); if (uv == null || uv.Disposing || uv.Disposed) { return; } if (resource == null || resource.Ultraviolet != uv) { if (ShouldInitializeResource(uv)) { resource = initializer(uv); } } }
/// <summary> /// Initializes a new instance of the <see cref="UltravioletSingleton{T}"/> class. /// </summary> /// <param name="flags">A set of flags which modify the singleton's behavior.</param> /// <param name="initializer">A function which initializes a new instance of the bound resource.</param> public UltravioletSingleton(UltravioletSingletonFlags flags, Func <UltravioletContext, T> initializer) { Contract.Require(initializer, nameof(initializer)); this.Flags = flags; this.initializer = initializer; var uv = UltravioletContext.RequestCurrent(); if (uv != null && uv.IsInitialized) { InitializeResource(); } UltravioletContext.ContextInitialized += UltravioletContext_ContextInitialized; UltravioletContext.ContextInvalidated += UltravioletContext_ContextInvalidated; }