我只是遇到了同样的问题。 就我而言,我有一个单例服务管理器,用于与该服务进行通信。 在管理器中,服务是这样启动的:

context.bindService(new Intent(context, MyService.class), serviceConnection, Context.BIND_AUTO_CREATE);

通过按照Alik Elzin的建议删除Context.BIND_AUTO_CREATE,我已经能够使用this.stopSelf()停止服务,并在执行此操作时调用了onDestroy()。 问题是在那之后,我无法使用上面的命令从管理器中重新启动服务。

最后,我通过使用服务中的回调(告诉管理器停止该服务)来解决此问题。 这样,在启动/停止服务时,经理总是负责任,一切似乎都很好。 我不知道这样做是否有任何反指示。

代码真的很简单。 在服务中创建一个回调,并在连接类中在管理器中进行设置:

private ServiceConnection mServiceConnection = new ServiceConnection() {

public void onServiceConnected(ComponentName className, IBinder service) {

myService = ((MyService.LocalBinder)service).getService();

myService.setCallback(new MyService.MyServiceCallback() {

@Override

public void onStop() {

stopService();

}

});

}

public void onServiceDisconnected(ComponentName className) {

myService = null;

}

};

并停止服务:

public void stopService()

{

if(mServiceConnection != null){

try {

mContext.unbindService(mServiceConnection);

} catch (Exception e) {}

}

mContext.stopService(new Intent(mContext, BleDiscoveryService.class));

}

在服务中,只需在需要停止时调用myCallback.onStop()。

android 停止服务方法,android-如何自行停止服务?相关推荐

  1. android模拟按键方法,Android随笔之——模拟按键操作的几种方式

    前几天转过一篇Android上模拟按键操作.触屏事件的博客,昨天又去找了百度.谷歌了一下,写了一点简单的测试代码,留待不时之需.有需要看之前转载的那篇博客的请看这里→_→转:Android随笔之--使 ...

  2. android datepicker使用方法,android DatePicker

    Date Picker 提供了一个构件去选择一个时间,使用DatePicker构件,该构件允许用户去选择月,日,年在一个界面中. 实例介绍 首先我们应该先创建一个DatePickerDialog,该D ...

  3. android view使用方法,Android View构造方法第三参数使用方法详解

    我们都知道,在Android中要使用一个View,一般会有两种方式: 在XML文件中配置: 直接在代码中new一个View的对象. 我们今天讨论的内容就是围绕着View的构造方法的. 1.实例 首先我 ...

  4. android返回键方法,Android按返回键(后退键)Back键事件捕获的两种方法

    package zhangphil.back; import android.support.v7.app.ActionBarActivity; import android.util.Log; im ...

  5. android avd 使用方法,Android中Android Virtual Device(AVD)使用教程

    AVD的全称为:Android Virtual Device,就是Android运行的虚拟设备,他是Android的模拟器识别.建立的Android要运行,必须创建AVD,每个AVD上可以配置很多的运 ...

  6. android datepicker使用方法,android中DatePicker和TimePicker的使用方法详解

    本文以实例讲述了android中DatePicker和TimePicker的使用方法,具体步骤如下: 下面是实现具体功能的代码,其中main.xml代码为: android:layout_width= ...

  7. android view使用方法,android – 如何使用getView()方法,它在哪里被调用?

    我是Android开发的新手,并且一直遵循Android网站上提供的教程.我目前在视图教程部分,特别是Grid Views: Hello, Grid View Tutorial的教程. 我无法通过适配 ...

  8. Android代码混淆方法,Android 代码混淆零基础入门

    内容提要 本篇文章主要有三个部分,让读者读完后能自己写规则混淆项目 对Android代码怎么开启混淆做一个简单的介绍. 对混淆规则做一个简单介绍: 在混淆过后Crash日志反推代码工具retrace. ...

  9. android 接口实现方法,Android应用开发之Android 请求网络接口实现方法

    本文将带你了解Android应用开发之Android 请求网络接口实现方法,希望本文对大家学Android有所帮助. public   class Fragment01 extends Fragmen ...

最新文章

  1. Basis,去中心化央行?
  2. Tracetcp/Tcptrace的使用
  3. Windows下为PHP安装redis扩展
  4. python qcut_Python之Pandas库学习(三):数据处理
  5. 从ABAP Netweaver的SICF到SAP Kyma的Lambda Function
  6. linux 搭建任务队列集群,beanstalkd任务队列 linux平台安装测试
  7. PostGIS容器运行
  8. 数组超过预设的最大数组大小_工作表数组大小的扩展及意义
  9. (26)ESLint一JS代码格式校验
  10. 10大PHP比特币开源项目
  11. 简单手绘背景绘画过程-------树!
  12. Bootstrap入门学习(三)——简单项目
  13. 适配器模式 - 上厕所案例
  14. 服务器虚拟机镜像怎么设置ip,风云OL虚拟机镜像一键服务端+配套客户端+启动教程+GM命令+IP修改等...
  15. 【GitHub】cmder下载地址
  16. 基于SSM实现的演唱会网上订票系统-JAVA【数据库设计、源码、开题报告】
  17. arping 命令解析
  18. CentOS7安装oh-my-zsh(github start Top 10)
  19. git 学习指南 学习资料笔记
  20. 史上最拉跨的导线平差程序( by C#)

热门文章

  1. 仿小米商城和登录的静态页面
  2. 青村茶舍||“认知障碍干扰计划”社会治理创新活动
  3. 程序人生 - 关于茶叶的冷知识,不懂这些,千万别说你懂茶!
  4. 【Codecs系列】x265编码器(三):preset支持工具集和优化分析
  5. python 3.6.5 java jdk版本_eclipse开发者版本下载-eclipse ide for java developers最新版v3.6.0 pc版 - 极光下载站...
  6. 用Java语言进行简单的求1-100之间的求偶和,并把求和结果在控制台输出
  7. 3D场景中HUD的实现
  8. KPCA、KLPP及两者结合改进的特征提取特征降维算法
  9. 周记20140216
  10. 实验二 简单网络命令和wireshark捕获FTP用户名密码