Exemple #1
0
        /// <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);
        }
Exemple #2
0
        /// <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;
        }