MainActivity泄漏了最初绑定在此处的ServiceConnection CustomTabsServiceConnectionImpl

时间:2018-11-22 17:54:29

标签: xamarin xamarin.android chrome-custom-tabs

xamarin android项目unbindservice用于自定义标签。 我无法找出解除服务绑定的方法。

1 个答案:

答案 0 :(得分:0)

如果您使用Xamarin.Android.Support.CustomTabs库,请注意CustomTabsActivityManager类未提供UnBindService()方法,并且您无法从外部获取CustomTabsServiceConnection实例因此很难在“活动”中取消绑定服务。

解决方案:

因此,您需要自己添加UnBindService()方法,例如:

public class MyCustomTabsActivityManager
{
     CustomTabsServiceConnectionImpl connection;

     public Activity ParentActivity { get; private set; }
     public CustomTabsClient Client { get; private set; }

     CustomTabsSession session = null;

     ...

     public void UnBindService()
     {
         if (connection != null)
         {
             ParentActivity.UnbindService(connection);
             Client = null;
             session = null;
          }
     }
}

然后,您可以在UnBindService()中使用此Activity

protected override void OnDestroy()
{
    myCustomTabsActivityManager.UnBindService();
    base.OnDestroy();
}