我一直在使用Azure移动服务和Xamarin Android,而我目前对如何重新使用移动服务客户端感到困惑。我见过的每个Xamarin Android示例都使用单个活动来创建对客户端的新引用。我想创建一次对客户端的引用,并在多个活动中重用它。
到目前为止,我已经关注了this tutorial,但我对如何为多项活动开展这项工作感到困惑。我真的不想在整个应用程序中继续创建此客户端的新实例。
这样做的一个动机是,我不想在每次创建新客户端时都必须重新进行身份验证。理想情况下,我会在我的活动中创建一次客户端,进行身份验证,然后重新使用该客户端。
由于我没有使用这些工具的经验,因此我不会参与这个工具,所以任何有关如何执行此操作的指示(甚至是不执行此操作以及如何正确执行此操作的原因)都表示赞赏
答案 0 :(得分:0)
在您的应用程序中,您可以创建一个像这样的静态类
public static class AzureMobileService
{
/// <summary>
/// Initializes static members of the <see cref="AzureMobileService"/> class.
/// </summary>
static AzureMobileService()
{
Instance = new MobileServiceClient("http://<your url>.azure-mobile.net/", "< you key>")
{
SerializerSettings = new MobileServiceJsonSerializerSettings()
{
CamelCasePropertyNames = true
}
};
}
/// <summary>
/// Gets or sets the Instance.
/// </summary>
/// <value>
/// The customers service.
/// </value>
public static MobileServiceClient Instance { get; set; }
}
&#13;
每次你需要它时你应该使用
AzureMobileService.Instance
&#13;
这样,无论您是哪个页面,您的客户端实例都将与应用程序相同:)
答案 1 :(得分:0)
A different method instead of using a static class is to use an Application
class. The Application
class is the root of the app and stays in memory throughout the app's life cycle.
[Application]
public class AppInitializer : Application
{
private static Context _appContext;
public MobileServiceClient ServiceClient { get; set; }
public override void OnCreate()
{
base.OnCreate();
ServiceClient = new MobileServiceClient("http://<your url>.azure-mobile.net/", "< you key>")
{
SerializerSettings = new MobileServiceJsonSerializerSettings()
{
CamelCasePropertyNames = true
}
};
}
public static Context GetContext()
{
return _appContext;
}
}
Then inside an activity you can use it like this:
public class MainActivity : Activity
{
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
var appState = (AppInitializer) ApplicationContext;
//appState.ServiceClient
}
}