예제 #1
0
        /// <summary>
        /// 在应用程序由最终用户正常启动时进行调用。
        /// 将在启动应用程序以打开特定文件等情况下使用。
        /// </summary>
        /// <param name="e">有关启动请求和过程的详细信息。</param>
        protected override void OnLaunched(LaunchActivatedEventArgs e)
        {
            Frame rootFrame = Window.Current.Content as Frame;

            //从凭据保险箱加载令牌信息
            var accessToken  = TokenUtils.QueryAccessTokenCredential();
            var refreshToken = TokenUtils.QueryRefreshTokenCredential();

            //校验令牌信息有效性
            if (!TokenUtils.VerifyToken(accessToken))
            {
                if (TokenUtils.VerifyToken(refreshToken))
                {
                    //刷新令牌信息
                    RefreshToken(refreshToken.signature);
                }
            }
            else
            {
                this.accessToken  = accessToken.signature;
                this.refreshToken = refreshToken.signature;
                this.username     = TokenUtils.ParseTokenUsername(accessToken.signature);
            }

            //设置应用最小尺寸
            ApplicationView.GetForCurrentView().SetPreferredMinSize(new Size {
                Width = 320, Height = 480
            });

            // 不要在窗口已包含内容时重复应用程序初始化,
            // 只需确保窗口处于活动状态
            if (rootFrame == null)
            {
                // 创建要充当导航上下文的框架,并导航到第一页
                rootFrame = new Frame();

                rootFrame.NavigationFailed += OnNavigationFailed;

                if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)
                {
                    //TODO: 从之前挂起的应用程序加载状态
                }

                // 将框架放在当前窗口中
                Window.Current.Content = rootFrame;
            }
            this.rootFrame = rootFrame;

            //加载应用本地配置

            //加载应用主题
            ThemeUtils.LoadThemeSetting();

            if (e.PrelaunchActivated == false)
            {
                if (rootFrame.Content == null)
                {
                    // 当导航堆栈尚未还原时,导航到第一页,
                    // 并通过将所需信息作为导航参数传入来配置
                    // 参数
                    rootFrame.Navigate(typeof(MainPage), e.Arguments);
                }
                // 确保当前窗口处于活动状态
                Window.Current.Activate();
            }
        }