如何通过意图传递 LocationClient 以及何时在主要活动中存在抽象方法?

Posted

技术标签:

【中文标题】如何通过意图传递 LocationClient 以及何时在主要活动中存在抽象方法?【英文标题】:How can I pass a LocationClient through an intent and when the abstract methods are present in the main activity? 【发布时间】:2014-01-26 00:09:52 【问题描述】:
LocationClient(Context context,
    GooglePlayServicesClient.ConnectionCallbacks connectionCallbacks, 
    GooglePlayServicesClient.OnConnectionFailedListener connectionFailedListener)

这通常被称为:

LocationClient LC = new LocationClient(this, this, this);

这样做的问题是它将当前活动视为上下文,而ConnectionCallbacksOnConnectionFailedListener 需要抽象方法。我希望能够在我的主要活动中创建此客户端,然后将其传递给用户可以进行的各种其他活动之一。我是否可以将其作为可包裹的意图传递?在主要活动中创建的抽象方法会发生什么?是否有执行此操作的标准,或者您是否知道任何更好的方法来处理此问题,或者在每个活动中创建一个新的 LocationClient 是否更有意义?

【问题讨论】:

【参考方案1】:

LocationClient 不是 Parcelable,因此您无法通过 Intent 传递它。

通常您只需要或需要一个 LocationClient 每个应用程序,而不是每个活动,因此我不会在每个活动中创建一个。

这使您可以选择在 Application 类中创建它。该应用程序还派生自Context,因此这不应该出现任何问题。

您可以阅读有关派生您自己的应用程序类 here 或其他地方的信息。

【讨论】:

以上是关于如何通过意图传递 LocationClient 以及何时在主要活动中存在抽象方法?的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 kotlin 中的意图传递对象的 MutableList

如何通过具有不可序列化数据的意图传递数组或数组列表?

如何将 URI 传递给意图?

通过意图而不是构造函数传递数据

传递对象在活动意图中返回 null

当我使用 Serializable 出错时,如何使用意图传递自定义对象列表