问题标签 [serviceconnection]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - Activity 泄露了原本绑定在这里的 ServiceConnection com.google.android.youtube.player
我正在使用一个具有android.support.v4.view.ViewPager布局的 Activity,我用来操作 Tab 导航。我对不同的标签有不同的片段。在我的第三个选项卡上,我正在从我的 YouTube 帐户加载一些 YouTube 缩略图。
当我加载应用程序(当我停留在第一个选项卡时)并按返回退出应用程序时,它存在没有任何问题。但是当我导航到第二个选项卡并尝试按后退按钮时,应用程序存在并出现如下错误。
我已将 YouTube Data API v3 添加到我的项目中。
我该如何解决这个问题?为什么从第二个选项卡退出但不在第一个选项卡中时出现错误?
这不是this的重复问题。
android - MainActivity 泄露了原本绑定在这里的 ServiceConnection android.speech.SpeechRecognizer$Connection@414ee400
在我的应用程序中,我认出用户说“退出”或“关闭”,应用程序应该关闭。使用此代码
语音识别后出现此运行时错误。
如果我尝试销毁 SpeechRecognizer,我会收到另一个运行时错误,因为sr
它是 null。
日志
我应该怎么办?
android - 关于android service-activity 数据收发和ServiceConnection
有几种方法可以连接到 Service to Activity。我只对本地服务感兴趣,我LocalService
会站在那里直到用户停止它(这也意味着应用程序的结束)。我可能知道错了,如果是,请纠正我。
在参考页面上,说明为了直接使用本地服务的方法,我们应该使用ServiceConnection
. 绑定后,我们可以有一个LocalService
类的引用,我们可以使用this的方法LocalService
。AFAIK 我们使用此参考调用的方法在具有相关活动的主线程上运行。
让我感到困惑的是,如果我使用骨架结构并LocalService
直接通过其静态引用(即 by LocalService.getInstance()
)访问 's 方法会怎样。好吧,我已经使用它并且没有遇到任何问题,但我仍然不确定哪个更好,以及为什么。
提前致谢。如果需要,我可能会添加其他信息。
编辑:在我之前提到的解决方案中,没有活动保留对LocalService
.
它用于
- 开始一些
LongRunningAsyncTasks
(在服务停止之前全部停止和引用无效), - 更新应用程序
Notification
, - 得到
getFilesDir()
, - 保留枚举值(其引用未保存在其他地方,它仅用于比较)以便从任何地方访问(不值得使用 SharedPreferences)。
- 举杯祝酒
android - Android:如何判断绑定服务何时被销毁?
我有一项服务绑定到几个活动,每个活动都使用ServiceConnection
.
每个活动都需要在调用服务之前检查服务是否已在使用中。因此,在服务中,我有一个函数(比如说getCurrentId()
),它返回服务当前正在执行的操作的详细信息。然后在客户端活动中,建立服务连接:
一个按钮切换到服务的绑定:
和解绑:
我根本不打电话startService()
。
在绑定到服务之前,我检查它是否已经处于活动状态以及它在做什么:
问题是,如果一个活动绑定到服务然后解除绑定,onDestroy()
则调用服务方法(我已经登录它以确认这一点),这很好。
但这不会触发onServiceDisconnected()
。_
所以 mService 永远不会设置为 null,当我到达那个 if 语句时,它会愉快地继续并调用getCurrentId()
,它会返回之前的任何细节。
我认为onServiceDisconnected()
只有在服务正在运行的线程被意外终止时才应该调用它,所以当服务被销毁时不调用它是正确的,因为最后一个活动使用它解除绑定。
据我所知,该服务没有被重新实例化,我已经在整个过程中进行了日志记录。
这给了我两个问题:
是否有替代回调函数或某种方式通知 ServiceConnection 其服务已被解除绑定破坏?
如果服务已经被销毁,那我还怎么调用它的函数呢?还是发生了其他事情 -ServiceConnection
或以Binder
某种方式返回值而不实际调用服务?
android - 每个服务绑定都需要一个 ServiceConnection 吗?
我有几个Service
要绑定到的Android Activity
,因此我可以监视用户的多个操作。
为了能够绑定每个服务,并且我将拥有几个,ServiceConnection
我的活动中是否需要几个 private ,如下所示?
或者我是否需要在我的 Activity 和服务之间提供一个管理器类,以便更好地使用和理解有界服务?
android - 在 ListView 中:Activity 泄露了 ServiceConnection原本是绑定在这里的
更新:
我刚刚在另一台设备上测试了我的应用程序,发现在运行 Android 4.4.2 的 Nexus 4 上确实出现了错误,但在运行 Android 4.0.4 的 Desire S 上却没有。他们都安装了当前的 YouTube 应用程序 (5.3.32),这是使用 API 所必需的。
问题:为什么我会收到这些 ServiceConnectionLeaked 消息?(请参阅下面的 Logcat)
描述:
我正在使用 YouTube Android Player API 1.0.0 ( https://developers.google.com/youtube/android/player/ ) 使用以下适配器代码在 ListView 中加载视频缩略图:
保存此 listView 的 Fragment 具有以下代码:
这是发生的事情:
- 片段已创建,YouTube 缩略图已正确加载和显示。
现在我第一次旋转设备(假设为横向):
- Fragment 被创建,已经存在的适配器连接到 listView,但没有为所有当前可见的列表项加载缩略图。
- 当我向下滚动时,新的列表项进入屏幕。
- 如果这样的新列表项使用新的 ViewHolder,则其缩略图会正确加载。
- 如果这样的新列表项使用第一个可见列表项中的 ViewHolder,则根本不会加载其缩略图。
因此,这会产生一个缩略图列表,这些缩略图在正确加载和根本不加载时交替出现。现在我再次旋转设备(回到纵向):
- Fragment 已创建,现有适配器已连接到 listView 并且所有缩略图都已正确加载。
现在我第三次旋转设备(我们再次处于先前错误的横向):
- Fragment 已创建,现有适配器已连接到 listView 并且所有缩略图都已正确加载。
所以只有在设备第一次旋转之后才会发生一些事情,所以可见的缩略图不会加载到它们的列表项中。
logcat 显示第一次旋转后每个缩略图请求的以下消息:
为什么我会收到这些 ServiceConnectionLeaked 消息?
我已经四处搜索,在大多数情况下,需要某种 API 初始化,其中必须提供应用程序上下文而不是活动上下文。但是对于 YouTubePlayer Android API,没有这样的初始化(至少在我的部分代码中没有)。
android - 为什么 onServiceDisconnected 在应用程序崩溃时没有被调用?
我有一个普通的安卓ServiceConnection
:
我正在覆盖这样的onServiceDisconnected()
方法:
并且服务已绑定并启动得很好。连接服务一段时间后,我故意使应用程序崩溃;但是,onServiceDisconnected
从未调用过 - 为什么会这样?根据文档,应该在应用程序崩溃时调用它...
我想要完成的事情是:
假设用户完全杀死了进程/或意外地遇到了崩溃,我希望发生某些事情(比如......取消通知......这是我目前在活动的 onStop() 中所做的)。但是我应该从哪里取消通知?如果应用程序崩溃了还要断开服务吗?
android - NullPointerError:无法连接到服务器
我正在尝试连接到我的 XAMPP 服务器并使用以下类与 MySQL 数据库进行交互。但是,错误指出我在该行收到 NullPointerException:
在 CreateGroup 类中。需要注意的是,在用户将文本输入 Dialog 并从那里启动服务之后,也会立即调用 CreateGroup 类。我对服务和网络连接还很陌生,但是我是否缺少一些东西,至少可以在尝试发送 .createGroup 命令之前验证服务是否已连接?
创建组类:
“createGroup”方法的服务器案例:
消息服务和 createGroup 方法:
android - Activity 在 Android 中泄露了 ServiceConnection 错误
我的应用程序是通过 Phone-Gap 开发的。但是,当我们从可访问性打开 TALK_BACK 选项时,我收到如下错误消息,并且应用程序崩溃了一段时间(但并非总是如此)。我该如何解决?
android - 谁是服务的“客户”——上下文,还是服务连接?
我在这里找到并阅读了关于 SO 的各种帖子,其中提到getApplicationContext()
在绑定到 a Service
- 而不是this
(in an Activity
) 或getActivity()
(in a Fragment
) 时应该使用。
但是,这对我提出了以下问题:文档反复谈论 a 的“客户端” Service
,例如:“当服务与所有客户端解除绑定时,Android 系统将其销毁”(http://developer.android.com /guide/components/bound-services.html)。
在这种情况下,客户是什么意思:
- 那个
Context
用来打电话的bindService()
- 或
ServiceConnection
提供给bindService()
假设我有两个Fragments
绑定到相同的Service
- 使用应用程序上下文并且每个都有自己的ServiceConnection
.
服务何时会被销毁?
如果我的第二种解释是正确的,Service
那么当所有连接都关闭时,即当每个 Fragment 调用getActivity().getApplicationContext().unbindService(mConnection)
. 如果第一个是真的,它应该在第一个 Fragment 进行调用时立即关闭,因为这将“取消绑定应用程序上下文”......
那么,哪种解释是正确的呢?(希望是第二个……)