Я думаю, что Xamarin Forms не дает нам API для получения состояния приложения.
Этого можно добиться, используя DependencyService
в Xamarin.Forms:
Сначала определитеИнтерфейс в вашем проекте PCL:
public interface IGetAppState
{
bool appIsInBackground();
}
В iOS:
[assembly: Dependency(typeof(GETAppState_iOS))]
namespace App129.iOS
{
public class GETAppState_iOS : IGetAppState
{
public bool appIsInBackground()
{
UIApplicationState state = UIApplication.SharedApplication.ApplicationState;
bool result = (state == UIApplicationState.Background);
return result;
}
}
}
В Android:
[assembly: Dependency(typeof(GETAppState_Android))]
namespace App129.Droid
{
public class GETAppState_Android : IGetAppState
{
public bool appIsInBackground()
{
bool isInBackground;
RunningAppProcessInfo myProcess = new RunningAppProcessInfo();
GetMyMemoryState(myProcess);
isInBackground = myProcess.Importance != Importance.Foreground;
return isInBackground;
}
}
}
В любом месте, где вы хотите знать, находится ли ваше приложение в фоновом или переднем плане, вы можете использовать:
bool isInBackground = DependencyService.Get<IGetAppState>().appIsInBackground();