android 无法关闭Service 5C

使用 stopService() 时无法停止Service
使用unbindService() 时 ,会关闭应用程序,再停止Service (不是我要的)。
我需要的效果:应用程序存在且能够关闭Service

需要的效果是 :
点击 RadioButton(开启服务)在后台一直运行即使应用关闭
点击 RadioButton(关闭服务)无论应用是否停止、关闭。Service关闭

0

9个回答

和activity(fragment)的生命周期绑定,在ondestroy中stopself() 试试呢!或者在activity的ondestroy方法中调用stopService(intent)

0
fruit_fruit
空享 在Service 中的ondestroy中使用stopself() 无用。另外在activity的ondestroy方法中调用stopService(intent)不是我要的效果,但可以关闭Service
大约一年之前 回复

activity 通过bindservice 与这个services进行绑定后,activity 可以获取 services 中的返回的内部类Binder 对象,该Binder implement必须实现一个自己定义的接口(方法),然后这个方法在services中具体实现为stopself(),这样就可以让ativity通过binder调用自己定义的接口(方法)控制service 关闭

0
fruit_fruit
空享 回复mynamekan: 不能既开启服务又关闭服务啊。。。
大约一年之前 回复
mynamekan
mynamekan 回复fruit_fruit: 因为你是bindservice,即使你关闭了services,它还会复活,所以,关闭后再unbindservices
大约一年之前 回复
fruit_fruit
空享 仔细测试了下,在应用程序销毁时 停止了Service ,但在应用程序stop状态下不行
大约一年之前 回复
fruit_fruit
空享 试了,没有停止Service
大约一年之前 回复

试了,没有停止Service

0

如果用startservice开启地服务,使用stopservice就可关闭服务;
如果用bindservice绑定地服务,使用unbindservice就可以关闭服务;
如果同时使用了二者,则需要使用stopservice和unbindservice才能关闭服务,service的onDestory才能执行。

0
weixin_43233445
徐心佳佳 这样不行,start开启后stop是停不下来的,不管你的service里面有没有线程,它的运行是不会停止的。
4 个月之前 回复
fruit_fruit
空享 谢谢,我就是这样使用的,但是关闭不了。强撑着微笑。中了头等奖
大约一年之前 回复
 @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        int id = START_STICKY_COMPATIBILITY;
        return super.onStartCommand(intent, flags, id);
    }

startId默认返回START_STICKY,即Service被杀死之后,马上创建新的。改一下ID即可解决你的问题。

0
fruit_fruit
空享 回复qq_29266921: 我做的事一个自动接听的功能,它是通过服务运行,但我没使用线程。我主要是想关闭这个功能,所以要关闭服务
大约一年之前 回复
qq_29266921
Biligle 回复fruit_fruit: 还有一种可能,你服务里挂着线程等,你把这些耗时的,耗资源的东西,先关掉,再去stop
大约一年之前 回复
qq_29266921
Biligle 回复fruit_fruit: stop、
大约一年之前 回复
fruit_fruit
空享 试了,谢谢,没用。服务还是存在,功能还是在运行。
大约一年之前 回复

menifest.xml里设置成系统级别的,即时程序关掉了服务还在运行
xml

     <service  
        android:name="com.example.service.MyService"  
        android:enabled="true"  
        android:process="system" />  

java

     Intent startIntent = new Intent(this, MyService.class);  
    startIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);  
    startService(startIntent);  

java

 public class MyService extends Service {
    boolean running = false;

    @Override
    public IBinder onBind(Intent arg0) {
        return null;
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        running = true;
        Log.i("trans", "onStartCommand");
        new Thread() {
            public void run() {
                try {
                    while (running) {
                        Thread.sleep(1000);
                        Log.i("trans", "do");
                    }
                } catch (Exception e) {
                }
            };
        }.start();

        return START_STICKY;
    }

    @Override
    public void onDestroy() {
        Log.i("trans", "onDestroy");
        running = false;
        super.onDestroy();
    }

}
0
fruit_fruit
空享 回复qq_35553864: 额,你知道twrp吗,找到相应手机版本刷入,然后利用 twrp 刷入。你看看吧
大约一年之前 回复
qq_35553864
阿卡阿卡 回复fruit_fruit: 如何嵌入到系统分区?我想让我的服务保活,却总是被杀死
大约一年之前 回复
qq_35553864
阿卡阿卡 现在这招还管用吗?能顾保证退出界面后服务还运行吗?我使用华为手机,当app退出后,息屏之后服务就被杀死。
大约一年之前 回复
fruit_fruit
空享 我是要关闭服务,不是让他持续运行,我是老大,叫他开就开,叫他关就关。但是现在他只会开,不会关。不过我的应用是嵌入到系统分区的,是因为这样,所以关不了吗?
大约一年之前 回复

Android之Service学习笔记

stopService的时候如果有其他的上下文环境也在与该Service做交互,那么该service只不会进行onDestory。

想控制service里面程序执行的开始和暂停,不用一定非要关闭service,通过给Service传递参数让其停止就行。

0

现在这招还管用吗?能顾保证退出界面后服务还运行吗?我使用华为手机,当app退出后,息屏之后服务就被杀死。

0
@Override
public void onDestroy() {
    super.onDestroy();
    if (mFloatLayout != null) {
        mWindowManager.removeView(mFloatLayout);
    }
}
    重写onDestroy()方法试下。实测 服务里注释掉之后,无论是stopService还是stopSelf都不能停止服务
0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
android中Service的启动,停止,绑定的注意事项
注意:不管在多个Context中多次调用startService()来启动同一个服务,也只会存在一个服务实例,只是多次的触发服务的onStartCommand()方法,只需在任何一个Context中调用一次stopService()或stopSelf()就能把该服务停下来;也就是说,如果一个服务已经销毁了,再次启动服务的时候,将会是一个新的服务,如果服务还没有销毁,还在运行或者只是停止了,再次启动服务,还是原来的服务; 不管在多个Context中多次调用startService()来启动同一个服务,也只会存
【原创】Service监听到事件后关闭启动自己的Activity
今天写代码的时候,遇到一个小问题,逻辑过程如下: 1 在mActivity中启动一个mService; 2 mActivity负责通知用户信息,运行在前台; 3 mService负责监听手机摇晃事件,运行在后台; 4 当mService监听到摇晃事件后,关闭启动mService的mActivity。  了解了逻辑过程后,给出如下思路: 思路1:在mService中获取mActivity的实例m,
Android--AIDL跨应用启动和关闭Service
前言 AIDL是一个缩写,全称是Android Interface Definition Language,翻译为Android接口定义语言。主要用于线程之间的通信,本文主要以不同应用之间使用AIDL通信为例介绍AIDL。 AIDL的使用按照AIDL文件类型分类,一种是序列化数据类,需要实现Parcelable,另一种是定义方法接口,以供系统使用来完成跨进程通信的。 AIDL默认支持JAVA...
service随APP关闭而关闭
service的两种启动方式之前已经介绍过,知道startservice()方式,如果未手动停止,service不随activity关闭而关闭,但是如果APP关闭了,那么service会关闭不?会。 1:activity启动service public class MainActivity extends Activity { private Button StartServiceB
Android中让Service被关闭后再重新启动
--------------------------------------------------------------------------- 转载:http://blog.csdn.net/arui319 --------------------------------------------------------------------------- 如何做到开机启动?
Android结束应用(不停止service)
好久没有搞过关闭应用之类的事儿了,记得从前使用的是 ActivityManager am = (ActivityManager)getSystemService (Context.ACTIVITY_SERVICE); am.restartPackage(getPackageName()); 现在貌似不管用了,从网络上查到的相关方法中,比较有效的是 android.os.Process
工作遇到的几个问题。(彻底退出当前APP,干掉service不再重启)
彻底退出当前应用程序 http://263229365.iteye.com/blog/1283914 wifi 知识 http://smallwoniu.blog.51cto.com/3911954/1334951 像360一样杀死后台服务 http://my.oschina.net/mopidick/blog/277813#comments +++
Android service 不被杀死“永不退出的服务”(双进程,服务,多进程,微信)
本文解析了微信的服务为什么不被杀掉,以及服务应该怎样设计才合理,制作一个不死的服务到底可能吗?,以及是否真的需要一个不死的服务。
Android:退出程序后保持Serivce开启不关闭
Android中,service的开启,默认是绑定activity的,是activity级的。 如果要实现当退出程序后,保持Service的运行,那么需要把service设置成为system级的,设置方法: 在AndroidManifest.xml中注册service时,加上属性android:process,如: android:name="com.jansun.push
Android Service 服务 1.第一种开启和关闭服务的方式
分别介绍两种开启和关闭服务的方式第一种开启和关闭服务的方式/MyService/res/layout/activity_main.xml&amp;lt;LinearLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot; xmlns:tools=&quot;http://schemas.android.com/tools&quot; ...
Android Service,AlarmManager组合实现定时任务踩的坑
做项目时遇到一个场景:app需要定时访问后台,感知获取登录用户有没有最新的消息。我采用了定义一个Service,在onStartCommand()方法中请求后台获取最新消息,接着创建一个AlarmManager来延时发送广播,再定义一个广播接收器,接收到一个广播后,接收器触发startService( ),这时service的onStartCommand再次被触发...代码如下:..
Android Service 服务 2.第二种开启和关闭服务的方式(用于自定义类,比较常用)
/MyService/res/layout/activity_main.xml&amp;lt;Button android:id=&quot;@+id/btn_twostartservice&quot; android:layout_width=&quot;wrap_content&quot; android:layout_height=&quot;wrap_content&quot; androi...
android service 启动和关闭不在同一个Activity的问题
在android2.3版本上可以在一个的activity中直接stopService()关闭同一应用另外一个activity启动的service,但是把sdk换成4.0.3以上的版本,就会抛出异常,这是我问题的来源。
安卓startService:让你彻底理解startService过程
  基于Android 6.0的源码剖析, 分析android Service启动流程,相关源码: ​ frameworks/base/services/core/java/com/android/server/am/ - ActivityManagerService.java - ActiveServices.java - ServiceRecord.java - Pr...
android service不停重启无法关闭
[  501.470952] init: property_set(&quot;ro.boottime.ril-daemon&quot;, &quot;501363645125&quot;) failed: property already set [  501.536261] init: Service 'ril-daemon' (pid 7422) killed by signal 1 [  501.542643] init: Se...
Android之四大组件(Service的开启与关闭)
个人开发的微信小程序,目前功能是书籍推荐,后续会完善一些新功能,希望大家多多支持!   前言   服务(Service)是Android系统中的四大组件之一。服务主要用于两个目的:后台运行和跨进程访问。通过启动   一个服务,可以在不显示界面的前提下在后台运行指定的任务,这样可以不影响用户做其他事情。通过AIDL服务可以   实现不同进程之间的通信,这也是服务的重要用途之一。 ...
Android Service有时无法启动
1.service启动时无报错,但是service无法启动。 2.Intent构造时,或者setClass时,在Service的class前面加上包名就好了。
BindService启动的Service为何在Activity销毁时自动解绑
以bindService启动服务后,直接退出Activity,日志会输出: ActivityThread: Activity com.example.administrator.layoutmanager.MainActivity has leaked ServiceConnection com.example.administrator.layoutmanager.MainActivit...
安卓Service无法启动的解决办法
直接上代码 <service android:name=".DownLoadService" android:label="SmartCamService" android:enabled="true" > android:name="android.intent.action.RESPOND_VIA_MESSAGE" />
真机运行使用stopService,service停止了,但功能未停止。
问题详细描述: 我在activity里做了个switch控件,ischecked=true时startService(intent)。等于false时,stopService(intent)。 activity里在有代码注册的Broadcast(写成内部类,代码注册的),接收这个Service发来的信息,用来更新activity里的内容。 我的Service里,实现的是类似打电话靠近
安卓-启动服务并让服务自己结束
让服务自己结束主要用到一个API就是stopSelf(); 下面写一个demo来演示下: 1)主界面中一个按钮,点击启动服务 2)服务中开始服务时开启一个线程执行一个for循环打印日志 3)当执行到500时停止服务 先看下打印的日志: I/StopService: run: i=499 I/StopService: run: i=500 I/StopService: onDestr
android开发 使用Action启动/关闭Service
前面有用使用Intent来控制  Service 使用的参数是Service的类 Service的启动/关闭还有另外一种方式来控制 通过Intent传入Action的参数  在manifest中注册一个Service并且设置一个action <service android:enabled="true" android:export
Android锁屏状态下service不能正常工作的探究
Android锁屏状态下service不能正常工作的解决
关于前台服务去除通知
只要用一个服务启动另一个服务,在被启动的服务里面开启开启前台服务,为其设置一个通知,然后在该服务开始真正运行之前调用stopself()即可,覆盖onDesreoy()调用stopForegroud()。原因是两个服务共用一个通知,杀掉一个剩下一个便是没有通知的前台服务。
设置Service为前台服务,保证service不会被杀死!!
本篇博客主要介绍如何设置service为前台服务,保证service不会再一段时间之后被系统杀死!!
Android 开发之Service 探索如何保证Service不被杀死或被kill之后自动重启
前言: 在我司项目1.0版本的时候消息是使用的环信、用了之后发现各种bug,各种机型不支持导致app崩溃,于是在2.0版本果断去掉环信,使用了公众号用的那套消息系统(老大自己写的)并做了扩展升级。搞了近半个月终于是搞完了,项目也顺利上线......
Android 保证Service服务不被杀死的几个方法
第一章 Service介绍service服务是一个应用程序的四大组件之一,可以再后台执行长时间运行的操作,不提供用户界面。一个应用程序组件可以启动一个服务,它将继续在后台运行,即使用户切到另一个应用程序。此外,一个组件可以绑定到一个服务与它交互,甚至执行进程间的通信(IPC)。1.1 基础介绍Service中比较重要的方法有以下几个:onStartCommand() 当其他组件,如Activity...
Android Service 手机启动服务 监听电话的状态 进行录音
Android启动服务
android adb 启动和关闭server命令
adb start-server和adb kill-server
Android的startForeground前台Service如何去掉通知显示
关于Android Service的内容,本人上一篇转载的博客非常详细,有需要的可以到下面链接查看:Android Service 完全解析 本文是根据其中某一个知识点扩展出来的。 一、正常的前台Service 我们都知道,Service几乎都是在后台运行的,所以Service的系统优先级还是比较低的,当系统出现内存不足情况时,就有可能回收掉正在后台运行的Service。如果你希望S
退出app,后台推送的服务也停止了,怎么可以做到不停止后台服务呢?
service粘性等的那4种方式试了,三星的可以,小米老款手机可以,新款不行,华为新款也不行,还有魅族什么的,都不行,新款的手机上都有一个安全中心,只有在安全中心里面添加上允许app自启动才可以 怎么破? 1 用jpush的这个问题就没得破了 能做的措施他们都做了 定制的rom会有这个问题 没得破 如果公司有钱可以去找手机厂家商务谈 开通白名单 就不会杀你们了 2 解
双击退出app问题(System.exit(0)),服务重启
1、最近在写一个基本都在本地操作的app的时候,由于最后我要把本地app里面的基本所有东西要上传到服务器的数据库里面。并且要上传大量图片,所以相当耗时并且会挡住屏幕。要想不挡住屏幕就开启线程或者是服务,当然上传本身就是在一个线程里面。所以我不打算再继续开线程了,于是我就把这个上传操作写在了服务里面。。那么问题就来了。 app习惯性的大家都是双击退出,那我就在MainActivity的onDest
android service使用小demo
android service使用的小demo 包括startService stopService bindService unbindService 两种开启、关闭service的小demo
当service停止了,他的内部线程还会执行吗
1.请问 service ondestory了,内部线程还会继续执行吗? public class ImService extends Service { private volatile int i=0; @Nullable @Override public IBinder onBind(Intent intent) { return null;
android—调试命令service
在android中,可以利用service命令去做很多调试工作,例如service list命令显示系统当前所有在service manager注册的service,其命令具体使用如下,# service service Usage: service [-h|-?] service list service check SERVICE service cal
【原创】Service如何关闭启动自己的Activity
今天在编写Android程序的时候,遇到这个问题。通过百度和google的搜索结果,总结出以下方法:方法一:public class mService extends Service {    //保存在service中的Activity对象    private static mActivity m;    //启动服务    static void startservice(Context c
unbindService()导致应用Crash的问题
/** * Demo描述: * unbindService()导致应用Crash的问题 * 2014年12月4日10:58:52 * * 今天在改Bug时发现一个问题: * unbindService(mConnection);会导致Crash * * 原因: * 在Activity中绑定Service时候执行的是: * getApplicationContext().bi
Android - 位置定位(Location)服务(Service)类的基本操作
位置定位(Location)服务(Service)类的基本操作本文地址: http://blog.csdn.net/caroline_wendy定位服务,可以确定移动设备的地址,在地图相关服务中,经常会使用GPS和移动相关的定位服务,GPS较为精准。根据常用的定位服务功能,又添加网络检测和Wifi检测,和启动相关界面进行测试的功能。代码:import android.content.Context
service中调用摄像头在无页面显示的情况下进行录像
service中的代码:public class BackgroundVideoRecorder extends Service implements SurfaceHolder.Callback { private WindowManager windowManager; private SurfaceView surfaceView; private Camera c...
Android后台运行的定时器的Demo ,AlarmManager与Service
Android 后台运行 定时器 AlarmManager Service
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 中国nlp学院无法注册 谷歌机器学习视频无法播放