Android-приложение зависает после нажатия кнопки питания оборудования - PullRequest
0 голосов
/ 04 ноября 2019

У нас есть кроссплатформенный проект xamarin с шаблоном cocossharp. Единственная проблема заключается в том, что при использовании приложения После нажатия кнопки питания и повторного нажатия на нее, чтобы открыть телефон, приложение зависает, и единственный способ использовать приложение снова - свернуть и снова открыть.

Я попытался исправитьбетонные и спящие методы. https://forums.xamarin.com/discussion/38489/preventing-sleep-mode-keeping-the-app-alive

в App.xaml.cs

 protected override void OnStart()
        {

            // Handle when your app starts
            UserService.AutomaticLogin();
            var access = Connectivity.NetworkAccess;
            if (access == NetworkAccess.Internet)
                InternetServices.InternterConnected = true;
            else
                InternetServices.InternterConnected = false;

            PreLoadPopUp();
        }

        protected override void OnSleep()
        {
            base.OnSleep();
            Debug.WriteLine(">>> App on sleep");
            if (Device.RuntimePlatform == Device.Android)
            {

            }
            GamePage.CocosSharpView.Paused = true;
            Debug.WriteLine(">>> Cocosharp view status: " + GamePage.CocosSharpView.Paused);
            Application.Current.SavePropertiesAsync();

            // Handle when your app sleeps
        }

        protected override void OnResume()
        {
            base.OnResume();

            Debug.WriteLine(">>> App on resume");
            if (Device.RuntimePlatform == Device.Android)
            {

            }
            GamePage.CocosSharpView.Paused = false;
            App.OpenCamera = false;
            Debug.WriteLine(">>> Cocosharp view status: " + GamePage.CocosSharpView.Paused);
            // Handle when your app resumes
        }

в MainActivity.cs

[Obsolete]
        protected override void OnCreate(Bundle savedInstanceState)
        {

            TabLayoutResource = Resource.Layout.Tabbar;
            ToolbarResource = Resource.Layout.Toolbar;

            App.ScreenHeight = (int)(Resources.DisplayMetrics.HeightPixels / Resources.DisplayMetrics.Density);
            App.ScreenWidth = (int)(Resources.DisplayMetrics.WidthPixels / Resources.DisplayMetrics.Density);

            base.OnCreate(savedInstanceState);
            Rg.Plugins.Popup.Popup.Init(this, savedInstanceState);
            Xamarin.Essentials.Platform.Init(this, savedInstanceState);
            global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
            CrossCurrentActivity.Current.Init(this, savedInstanceState);
            CrossCurrentActivity.Current.Activity = this;
            MobileAds.Initialize(ApplicationContext, App.AdAppIdAndroid);
            base.Window.SetFlags(WindowManagerFlags.KeepScreenOn, WindowManagerFlags.KeepScreenOn);
            LoadApplication(new App());


        }
        public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Android.Content.PM.Permission[] grantResults)
        {
            Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults);

            base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
        }

ошибок нет, но приложение зависает навсегда

...