在Xamarin.Android中,需要通过调用Xamarin.Forms使用DependencyService来使用活动
我在Xamarin.Forms+Xamarin.Android中手动实现。我打电话给Xamarin。表格:在Xamarin.Android中,需要通过调用Xamarin.Forms使用DependencyService来使用活动,xamarin,xamarin.forms,xamarin.android,google-pay,Xamarin,Xamarin.forms,Xamarin.android,Google Pay,我在Xamarin.Forms+Xamarin.Android中手动实现。我打电话给Xamarin。表格: DependencyService.Get<IPay>().Pay(); 但在“这个”中有问题-需要使用活动。如何实现?正如您在Xamarin on提供的一些示例中所看到的,您可以在Pay_Droid类中使用应用程序的“”,如下所示: Context _context; public Pay_Droid(Context context) : base(context) {
DependencyService.Get<IPay>().Pay();
但在“这个”中有问题-需要使用活动。如何实现?正如您在Xamarin on提供的一些示例中所看到的,您可以在
Pay_Droid
类中使用应用程序的“”,如下所示:
Context _context;
public Pay_Droid(Context context) : base(context)
{
_context = context;
}
public void Pay()
{
...
AutoResolveHelper.ResolveTask(paymentsClient.LoadPaymentData(request), _context, LOAD_PAYMENT_DATA_REQUEST_CODE);
...
}
首先,您可以在MainActivity类中创建公共静态MainActivity,然后在MainActivity OnCreate()方法中将当前MainActivity分配给macvivity: 最后,您可以通过MainActivity.macvivivity查看活动
public void Pay()
{
...
AutoResolveHelper.ResolveTask(
paymentsClient.LoadPaymentData(request),
MainActivity.macvivity,
LOAD_PAYMENT_DATA_REQUEST_CODE);
...
}
对于Xamarin,您可以使用:
public void Pay() => AutoResolveHelper.ResolveTask(
PaymentsClient.LoadPaymentData(request),
Platform.CurrentActivity,
LOAD_PAYMENT_DATA_REQUEST_CODE);
您是否测试过这是否会导致内存泄漏?在本机Android(Java)中,维护对上下文的静态引用将导致内存泄漏。
public void Pay()
{
...
AutoResolveHelper.ResolveTask(
paymentsClient.LoadPaymentData(request),
MainActivity.macvivity,
LOAD_PAYMENT_DATA_REQUEST_CODE);
...
}
public void Pay() => AutoResolveHelper.ResolveTask(
PaymentsClient.LoadPaymentData(request),
Platform.CurrentActivity,
LOAD_PAYMENT_DATA_REQUEST_CODE);