Ejemplo n.º 1
0
        protected override void OnDestroy()
        {
            base.OnDestroy();

            bIsWebSocketHandlerOn = false;
            if (wsClient != null)
            {
                wsClient.CloseAsync(System.Net.WebSockets.WebSocketCloseStatus.NormalClosure, "AdSubApp closed", System.Threading.CancellationToken.None).Wait(1000);
                wsClient.Dispose();
                wsClient = null;
            }
            if (WebSocketThread != null)
            {
                WebSocketThread.Dispose();
                WebSocketThread = null;
            }

            bIsHeartBeatThreadOn = false;
            if (HeartBeatThread != null)
            {
                HeartBeatThread.Dispose();
                HeartBeatThread = null;
            }

            bIsProgramControlThreadOn = false;
            bIsProgramLoop            = false;
            if (ProgramControlThread != null)
            {
                ProgramControlThread.Dispose();
                ProgramControlThread = null;
            }

            CActivityManager.GetInstence().FinishAllActivity();
            Settings.RuntimeLog.Info("OnDestroy");
        }
Ejemplo n.º 2
0
        /* Called when the activity is first created. */
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);

            // 隐藏标题栏
            this.RequestWindowFeature(WindowFeatures.NoTitle);
            // 隐藏状态栏
            this.Window.SetFlags(WindowManagerFlags.Fullscreen, WindowManagerFlags.Fullscreen);
            // 将背景设置为空
            this.Window.SetBackgroundDrawable(null);

            // Set our view from the "main" layout resource
            SetContentView(Resource.Layout.Main);

            // 获取启动方式
            string mode = null;

            if (Intent.Extras != null)
            {
                mode = Intent.Extras.GetString("mode");
            }
            // 解析启动方式
            if (ParseMode(mode) == 1)
            {
                // 开机自启动:未完全生效,后台运行
                // 故重启!
                //RestartApp();

                //// 重启后亦不生效,自杀后,通过守护进程开启
                //Settings.RuntimeLog.Info("重启后亦不生效,自杀后,通过守护进程开启");
                //Daemon();  // 关闭前,查看守护进程
                //Finish();
                //System.Threading.Thread.Sleep(8);
                //Android.OS.Process.KillProcess(Android.OS.Process.MyPid());
                //return;
            }

            // 节目控制线程
            if (ProgramControlThread == null)
            {
                ProgramControlThread = new Java.Lang.Thread(() =>
                {
                    bIsProgramControlThreadOn = true;
                    while (bIsProgramControlThreadOn)
                    {
                        System.Threading.Thread.Sleep(2000);
                        ProgramControl();
                    }
                });
            }
            if (!ProgramControlThread.IsAlive)
            {
                ProgramControlThread.Start();
            }

            // 心跳线程
            if (HeartBeatThread == null)
            {
                HeartBeatThread = new Java.Lang.Thread(() =>
                {
                    bIsHeartBeatThreadOn = true;
                    while (bIsHeartBeatThreadOn)
                    {
                        System.Threading.Thread.Sleep(Settings.HeartBeatRate);
                        MemoryCheck();
                        HeartBeat();
                        //if (IsTimePointIn(DateTime.UtcNow))
                        if (IsTimePointIn(DateTime.Now))
                        {
                            // 01:30~6:30 关闭程序
                            Settings.RuntimeLog.Info("01:30~6:30 关闭程序");
                            Daemon();  // 关闭前,查看守护进程
                            Finish();
                            System.Threading.Thread.Sleep(8);
                            Android.OS.Process.KillProcess(Android.OS.Process.MyPid());
                        }
                    }
                });
            }
            if (!HeartBeatThread.IsAlive)
            {
                HeartBeatThread.Start();
            }

            //// WebSocket线程
            //if (WebSocketThread == null)
            //{
            //    WebSocketThread = new Java.Lang.Thread(() =>
            //    {
            //        WebSocketHandler();
            //    });
            //}
            //if (!WebSocketThread.IsAlive)
            //{
            //    WebSocketThread.Start();
            //}
        }