我基本上正在开发一个使用Portable Class Library的Xamarin.Forms(跨平台)项目。而且我知道我无法从PCL运行后台服务,所以我需要单独进入每个平台。现在我陷入了android。
我需要创建的是绑定服务。因此,当我的应用程序启动时,我有2个按钮,启动和停止(禁用)。我点击开始(启动按钮变为禁用并启用停止按钮)它使用MessagingCenter向我的Android平台发送一条消息,使用Intent并绑定它来启动服务。
所以我在MainActivity.cs中有这个
MessagingCenter.Subscribe<StartAppBoundServiceMessage>(this,
"StartServiceMessage", message =>
{
Intent objXPathServiceIntent = new Intent(this, typeof(XPathService));
StartService(objXPathServiceIntent);
connection = new XPathServiceConnection(this);
BindService(objXPathServiceIntent, connection, Bind.AutoCreate);
});
StartAppBoundServiceMessage是我PCL中的一个简单类。
现在当我离开我的应用程序时(使用主页按钮或后退按钮或者可能是来电),我希望它能解除我的服务 - 但我的服务仍然应该继续。这就是我使用StartService()启动服务的原因。但是当它解除绑定时,它应该保留从我的UI设置的某些东西(比如服务中使用的设置)。
下次当我回来时,我的应用程序应该检查我的服务是否正在运行,如果是(它必须再次绑定它,让我进行设置更改或通过单击停止按钮等来停止服务)。< / p>
我有两个问题:
当我的应用程序离开前台时,我对Unind的位置感到困惑,再次回来时我会在哪里绑定。我知道如何检查我的服务是否已经运行,但我不知道在哪里检查它。因为后退按钮调用onCreate和主页按钮调用onResume。
如何在我的服务中保留这些设置,并在我复出时将它们放回我的用户界面。
PS:我的所有服务方法都将从我的PCL项目中调用。
注意:要求有点像音乐播放器,但应用程序不在其附近。