У нас есть кроссплатформенный проект 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);
}
ошибок нет, но приложение зависает навсегда