android stop 服务,当调用stopService方法时服务不会停止
我目前有一个服务,运行良好,当我启动它,但是当我试图阻止它使用stopService方法的onDestroy方法不会被调用。
这里是我用来停止服务的代码
stop_Scan_Button =(Button)findViewById(R.id.stopScanButton);
stop_Scan_Button.setOnClickListener(new View.OnClickListener(){ public void onClick(View v){ Log.d("DEBUGSERVICE", "Stop Button pressed"); Intent service = new Intent(CiceroEngine. CICERO_SERVICE); releaseBind(); Log.d("Stop_Scan_Button", "Service: " + service.toString()); stopService(service); Log.d("Stop_Scan_Button", "Service should stop! "); } });
我正确地认为,当使用stopService时,它调用服务的onDestroy方法? 当我按停止扫描button时,我的服务中的onDestroy()方法不会被调用。
还有什么我错过了,我应该停止服务?
编辑:添加onServiceConnected()得到调用时stopService运行,而不是onServiceDisconnected() ,为什么会发生这种情况?
编辑: 添加更多信息关于绑定
我在onCreate()方法中调用bindService,然后使用releaseBind()方法解除绑定服务。
这是该方法的代码:
public void releaseBind(){ unbindService(this); }
所以我认为解绑不是我的问题?
我将猜测你有一个方法调用releaseBind()意味着你以前在这个服务上调用了bindService() ,而releaseBind()调用了unbindService() 。 如果我的猜测不正确,请忽略此答案。
所有bindService()调用都有相应的unbindService()调用后,服务将closures。 如果没有绑定的客户端,那么当且仅当有人在服务上调用startService()时,服务还需要stopService() 。
所以,这里有一些可能性:
你仍然有绑定的客户端(例如,其他活动),在这种情况下,你不能停止服务,直到他们解除绑定
由于unbindService()和stopService()都是asynchronous的,所以在某些情况下,如果从ServiceConnection的onServiceDisconnected()方法中调用stopService()
另外,请记住,被销毁的服务的确切时间取决于Android,可能不是立即的。 所以,举例来说,如果你依靠onDestroy()来让你的服务停止正在完成的工作,考虑使用另一个触发器(例如,通过服务绑定接口调用stopDoingStuff()方法的活动)。
你所有的绑定closures了吗?
服务可以以两种方式使用。 这两种模式并不完全分开。 您可以绑定到使用startService()启动的服务。 例如,背景音乐服务可以通过调用startService()来启动,该Intent对象标识要播放的音乐。 只有在以后,当用户想要对播放器进行一些控制或者获得关于当前歌曲的信息时,可以通过调用bindService()来build立与服务的连接。 在这种情况下,stopService()不会实际上停止服务, 直到最后一个绑定closures
。
对于最近的答案,海先生抱歉,但据我所知,我已经成功地停止了这个代码中的服务:你可以在这里查看链接 。
public void onClick(View src) { switch (src.getId()) { case R.id.buttonStart: Log.d(TAG, "onClick: starting srvice"); startService(new Intent(this, MyService.class)); break; case R.id.buttonStop: Log.d(TAG, "onClick: stopping srvice"); stopService(new Intent(this, MyService.class)); break; } }
并在服务类:
public class MyService extends Service { private static final String TAG = "MyService"; @Override public IBinder onBind(Intent intent) { return null; } @Override public void onCreate() { Toast.makeText(this, "My Service Created", Toast.LENGTH_LONG).show(); Log.d(TAG, "onCreate"); } @Override public void onDestroy() { Toast.makeText(this, "My Service Stopped", Toast.LENGTH_LONG).show(); Log.d(TAG, "onDestroy"); } @Override public void onStart(Intent intent, int startid) { Toast.makeText(this, "My Service Started", Toast.LENGTH_LONG).show(); Log.d(TAG, "onStart"); } }
android stop 服务,当调用stopService方法时服务不会停止相关推荐
- win10服务器文件停止,解决win10提示“当OLE服务于对象服务器通讯时,后者已停止”的方法...
win10是windows中最新的系统,在经过多次的更新之后终于很多的系统故障都被解决了,现在win10中出现的大多数故障都是我们的用户设置不当造成的.最近在使用win10打开图片的时候总是会遇到错误 ...
- 如何关闭线程池?会创建不会关闭?调用关闭方法时线程池里的线程如何反应?
前言 相信大家在面试的时候经常会遇到「线程池」相关的问题,比如: 什么是线程池?线程池的优点? 有哪几种创建线程池的方式? 四种创建线程池的使用场景? 线程池的底层原理? 线程池相关的参数,比如Cor ...
- 卷影复制服务错误: 调用程序 CoCreateInstance 时的意外错误。hr = 0x8007045b, 系统正在关机。
服务器有时自动重启: 卷影复制服务错误: 调用程序 CoCreateInstance 时的意外错误.hr = 0x8007045b, 系统正在关机. 在服务中是:Volume Shadow Copy和 ...
- 子类调用父类方法时,方法中的变量用谁的
public class T1 {private int a=6;public void ha(){System.out.println(this.a);} } public class T2 ext ...
- ios手机端 表单input调用focus方法时,光标不显示,但软键盘会弹出来,可以修改内容,需要修改内容后光标才显示
功能: ios表单验证时,比如 输身份证号,失焦后验证身份证,如果不合法,就让光标跳到对应的输入框,我是不合法就调用focus方法,完了会跳过去,但是ios有个bug,它确实会定位到对应的输入框,而且 ...
- android调用js函数方法,Android和JavaScript相互调用的方法
本文实例讲述了Android和JavaScript相互调用的方法.分享给大家供大家参考,具体如下: Html页面和Java代码结合的方式一般用在界面经常被更改 的情况下,可以讲html放在网络中,软件 ...
- android oncreate调用,Android app启动activity并调用onCreate()方法时都默默地干了什么?...
在AndroidManifest.xml文件中的元素中有这么两句: 当写好的应用发布到手机上之后,当双击"APP"应用的图标时,系统会将这个点击时间包装成一个Intent,该Int ...
- Android之什么时候调用onSaveInstance方法的时候(为什么按Home键盘会调用,按Back不调用)
1.函数介绍 1).onCreate(Bundle savedInstanceState) 方法 Activity 创建时回调 : 该方法会自动传入一个 Bundle 对象, 该 Bundle 对 ...
- 坚持学习WF(8):本地服务之调用外部方法
WF提供了一组核心服务,例如在SQL 数据库中存储工作流实例的执行详细信息的持久性服务,计划服务,事务服务和跟踪服务.除了这些WF也提供了另外一种服务,叫做Local Service也可以叫做Data ...
- android与H5交互调用js方法无效问题
正常的调用js方法很简单,只有一句话 mWebView.loadUrl("javascript:do()"); do();是js提供的方法名 但是调用之后发现无效,不禁在想就这么一 ...
最新文章
- 远程办公,为什么一直不被公司普遍接受?
- 科普丨你不得不知道的20个大数据术语
- document 获得元素节点,属性节点,文本节点。
- (8)操作系统安全机制之二
- 手机模拟位置实现精准位置营销效果分析
- CocosPods 引入项目,哪些文件需要上传到服务器呢?
- 使用代码片段的正确姿势,打造高效的vscode开发环境
- JDK 6中新增的Java Console类功能概览
- 软件工程第二次课课堂总结
- 内容为王时代“内卷”急,安全风控一旦疏漏很要命!
- QT学习之文件读写操作
- [论文阅读] (16)Powershell恶意代码检测论文总结及抽象语法树(AST)提取
- 利用计算机属性将字符串逆序输出,字符串逆序的各种实现算法
- PC 护眼模式(凑合用)
- dedecms二次开发总结 变量参数
- lonlife oj 1029 - Bob and Alice are playing factors
- 5万款Lr顶级调色预设合集,精心整理,分类清晰,摄影师调色师必备素材,够用一辈子
- 【论文翻译】基于分层关注和时间RNN的动态异构网络链路预测建模
- 如何确定IP在同一网段
- Python是什么?一篇短文带你了解Python
热门文章
- 倪海厦天纪笔记16_倪海厦-天纪16
- 多目标优化——帕累托最优Pareto
- 半年总结——思想的转变
- 未能完成该操作pkdownloaderror错误8_国家励志奖学金申请和审批操作指南
- GUI GUIDER 应用笔记
- AiHi+翼次元学院儿童自然感知实践“几米小甜田”+中韧开智“优慧码”| Wit++
- Maven 部署私服依赖
- UG二次开发GRIP成品工具
- 数据库系统概念笔记——第4章 中级SQL
- 金山词霸取不了Adobe Reader的词?