From 673a93f4ed742a10a879a67b616e6646b03ef0fb Mon Sep 17 00:00:00 2001
From: wxr <464027401@qq.com>
Date: 星期二, 15 九月 2020 17:14:27 +0800
Subject: [PATCH] 202009151

---
 HDL-ON_Android/Application.cs |  130 ++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 115 insertions(+), 15 deletions(-)

diff --git a/HDL-ON_Android/Application.cs b/HDL-ON_Android/Application.cs
index 52ae5fa..fd6bb1c 100644
--- a/HDL-ON_Android/Application.cs
+++ b/HDL-ON_Android/Application.cs
@@ -1,6 +1,7 @@
 锘縰sing System;
 using System.Net;
 using Android;
+using Android.App;
 using Android.Content;
 using Android.Net;
 using Android.OS;
@@ -14,7 +15,7 @@
     /// 璁惧畾涓洪粯璁ゅ惎鍔ㄧ殑Application
     /// </summary>
     [Android.App.Application]
-    public class Application : Android.App.Application
+    public class Application : Android.App.Application, Android.App.Application.IActivityLifecycleCallbacks
     {
         static void reStartApp(Android.App.Application application)
         {
@@ -34,16 +35,17 @@
             }
 
             base.OnCreate();
+            RegisterActivityLifecycleCallbacks(this);
 
             initAll();
-           
+
         }
         /// <summary>
         /// 鎵�鏈夊垵濮嬪寲鍏ㄩ儴鍦ㄨ繖涓柟娉曞疄鐜�
         /// </summary>
         void initAll()
         {
-           
+
             string[] permissions = new string[] { Manifest.Permission.WriteExternalStorage, Manifest.Permission.RecordAudio,
             Manifest.Permission.Camera, Manifest.Permission.ProcessOutgoingCalls, Manifest.Permission.GetAccounts};
 
@@ -61,33 +63,48 @@
 
                 BaseActivity.NetworkStateChanged += (int obj) =>
                 {
-                    BusSocket.Stop();
-                    new System.Threading.Thread(() => {
-                        System.Threading.Thread.Sleep(1000);
-                        BusSocket.Start(6000);
-                    })
-                    { IsBackground = true }.Start();
-                };
 
+                    if (!IsEnterBackground)
+                    {
+                        BusSocket.Stop();
+                        new System.Threading.Thread(() =>
+                        {
+                            System.Threading.Thread.Sleep(1000);
+                            BusSocket.Start(6000);
+                        })
+                        { IsBackground = true }.Start();
+                    }
+                    else
+                    {
+                        Console.WriteLine("HHH 缃戠粶鍙樺寲浣嗗浜庡悗鍙�");
+                    }
+
+                };
             };
-            BaseActivity.RefreshUIAction += (activity) => {
+            BaseActivity.RefreshUIAction += (activity) =>
+            {
                 MainPage.Show();
                 checkSomeInfo();
             };
-            BaseActivity.OnResumeAction += (activity) => {
+            BaseActivity.OnResumeAction += (activity) =>
+            {
                 checkSomeInfo();
                 new HDL_ON.UI.AppUnlockPage().LoadPage();
             };
-            BaseActivity.OnDestroyAction += (activity) => {
+            BaseActivity.OnDestroyAction += (activity) =>
+            {
                 Console.WriteLine("OnDestroyAction");
                 BusSocket.Stop();
+                OnAppConfig.Instance.unlockTime = DateTime.Now;
             };
+
 
             HDLUtils.SetAuthoritiesName("com.hdl.onpro.fileProvider");
 
             //Shared.Application.IsGpsEnable = true;
 
-            Shared.Application.LocationAction = (arg1, arg2) => {
+            Shared.Application.LocationAction = (arg1, arg2) =>
+            {
                 Shared.Application.LocationAction = null;
 
                 new HDL_ON.DAL.Server.HttpServerRequest().GetCityInfo(arg1.ToString(), arg2.ToString());
@@ -158,5 +175,88 @@
             }
             return false;
         }
+
+        public void OnActivityCreated(Activity activity, Bundle savedInstanceState)
+        {
+
+        }
+
+        public void OnActivityDestroyed(Activity activity)
+        {
+            //throw new NotImplementedException ();
+        }
+
+        public void OnActivityPaused(Activity activity)
+        {
+            //throw new NotImplementedException ();
+        }
+
+        public void OnActivityResumed(Activity activity)
+        {
+            //throw new NotImplementedException ();
+        }
+
+        public void OnActivitySaveInstanceState(Activity activity, Bundle outState)
+        {
+            //throw new NotImplementedException ();
+        }
+
+        public void OnActivityStarted(Activity activity)
+        {
+            //throw new NotImplementedException ();
+
+            mCount++;
+            if (mCount == 1)
+            {
+                Console.WriteLine("HHH OnActivityStarted锛歠oreground");
+                BusSocketStart();
+            }
+        }
+
+        public void OnActivityStopped(Activity activity)
+        {
+
+            mCount--;
+            if (mCount == 0)
+            {
+                Console.WriteLine("HHH OnActivityStopped锛� background");
+                BusSocketStop();
+            }
+        }
+
+
+        public override void OnTerminate()
+        {
+            base.OnTerminate();
+            UnregisterActivityLifecycleCallbacks(this);
+        }
+
+        int mCount;
+
+        /// <summary>
+        /// 鏄惁杩涘叆鍚庡彴
+        /// </summary>
+        public bool IsEnterBackground = false;
+
+        /// <summary>
+        /// BusSocketStop
+        /// </summary>
+        void BusSocketStop()
+        {
+            IsEnterBackground = true;
+            BusSocket.Stop();
+            OnAppConfig.Instance.unlockTime = DateTime.Now;
+        }
+
+
+        /// <summary>
+        /// BusSocketStart
+        /// </summary>
+        void BusSocketStart()
+        {
+            IsEnterBackground = false;
+
+            BusSocket.Start(6000);
+        }
     }
-}
+}
\ No newline at end of file

--
Gitblit v1.8.0