- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
一段时间以来,我一直在使用 Android 的 GoogleApiClient 来访问地理围栏等其他 API。我很欣赏通过 GoogleApiClient 和 Google Play 服务,Google 一直在尝试解决 Google fragment 化问题,方法是允许较旧的 Android 设备将连续更新下载到其中包含的 API,而无需全新的操作系统更新。
在 Java 级别我一直不清楚的是为什么 GoogleApiClient 需要并支持连接/暂停/失败的回调?没有进一步的细节,看起来本质上是其他 API 的包装器的 GoogleApiClient 似乎是过度烘焙和过度设计的。连接/暂停/等不能对开发人员透明吗?最坏的情况是无法访问服务,难道它不能抛出异常吗?
因此,与其批评,我确实认为我的知识存在漏洞,这意味着我无法欣赏设计。为什么 Google 会这样设计 API 客户端?他们是否遵循某种设计模式?
最佳答案
它的结构方式有很多原因,但最重要的是:
现在,最重要的是,增加 Play 服务复杂性的众多因素之一是对灵 active 的需求,需要支持许多不同的功能/库,而不需要编译每个使用 Play 服务的应用程序/包括它支持的每个库(并且,与此相关的是,通过在每个利用 Play 服务的应用程序中复制 Play 服务的所有功能来避免膨胀每个应用程序)。因此,Play Services 使用客户端-服务器架构;使用 Play 服务的应用不会导入所有 Play 服务(包括提供该系统底层功能的代码)。相反,每个使用 Play Services 的应用程序都会导入一组更小、更集中的接口(interface),这些接口(interface)能够与 Play Services 应用程序中这些服务的实现进行通信(并且只有 Play Services 应用程序本身需要包含所有的实际实现这些接口(interface)的逻辑)。但是,由于这种架构,您需要在运行时执行相当于“导入”的操作……也就是说,您可能需要在使用其功能之前下载并初始化 Play Services 应用程序。
关于android - 什么是 GoogleApiClient 设计模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38889447/
当我尝试从 GoogleApiClient 注销时,收到以下错误消息 GoogleApiClient.isConnected() on a null object reference 这是我的代码:
所以我发现了一些关于 GoogleApiClient 对我来说不是很清楚的东西。GoogleApiClient 有一个名为 onConnected 的函数,该函数在客户端已连接(肯定)时运行。 我得到
我在这里查看了这个问答:GoogleApiClient is throwing "GoogleApiClient is not connected yet" AFTER onConnected fun
我正在尝试在服务中实现 Fused Location API。我已经完成了以下编码,但出现如下错误: java.lang.RuntimeException: Unable to instantia
我想在android中实现自动完成位置google API。为此,我需要创建一个 GoogleApiClient 对象。我为此使用了以下代码... private GoogleApiClient mG
我创建了一个名为 SendToWear 的类,其中包含一个名为 sendMessage(Context context, String path, @Nullable String data) 的静态
我想获取设备的当前位置,这是我的一段代码 private void displayLocation() { mLastLocation = LocationServices.FusedLoca
我的场景是我希望有一个服务定期获取一些信息(例如用户的位置),将其报告到我的服务器并在该位置与某个 X 位置匹配时接收推送通知。 无论应用程序是否正在运行,我都希望得到一些关于定期检索位置信息的最佳机
我正在将 Google Smart Lock 实现到一个应用程序中,之前我在构建 Api 客户端时没有遇到任何问题。事实上,我正在完成一些语法更改并清理代码(甚至没有触及初始化 Api 客户端的代码)
这是我尝试实例化它的代码: gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
我在我的应用程序上使用 Google+ 登录,并遵循了诸如 Getting Started 之类的引用和 Google+ Sign-in for Android . 所以情况是这样的: 我有一个 Lo
我正在编写一个 Android Wear 应用,我想让可穿戴设备在点击按钮时在手机上启动一个 Intent。 为此,我首先像这样设置与 GoogleApiClient 的连接 googleApiCl
我想使用 FusedLocationProviderApi 获取最后的已知位置。我按照谷歌教程所说的那样做了,但似乎 GoogleApiClient 没有连接,至少它没有触发 onConnected
我正在处理的应用程序有时可以正常工作,但有时会出现此错误 FATAL EXCEPTION: java.lang.RuntimeException: Unable to pause activity {
我正在为我的项目使用 Google App Indexing。 此功能的新手。我只是遵循谷歌指南。 Notify the google using API 在此页面中,要求创建一个 GoogleApi
我通过 GoogleApiClient 为应用设置了 google plus 登录。 每当应用程序首次安装并尝试通过 GoogleApiClient 建立连接时,它永远不会成功,并且总是以 onCon
我正在尝试获取服务中的位置更新信息。为此,我创建了一个服务,并在服务类的 onStartCommand 中创建了 GoogleApiClient,但我没有在服务中收到连接回调。请帮助解决这个问题。 下
更新用户的当前位置我在我的项目中实现了以下方法: GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedList
我正在尝试为我的 Android 游戏使用 Google Games 回合制 Api。我用来连接 GoogleApiClient 的代码来自 Google 的 Api 示例或文档。 在我的 onCon
我尝试学习 android 开发,现在我正在开发一个具有融合位置服务的应用程序。 当我想放置 GoogleMap fragment 、带有经纬度的 Textviews 和其他一些小部件时,我得到了一个
我是一名优秀的程序员,十分优秀!