android 无法关闭Service 5C

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

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

9个回答

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

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

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

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

试了,没有停止Service

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

weixin_43233445
徐心佳佳 这样不行,start开启后stop是停不下来的,不管你的service里面有没有线程,它的运行是不会停止的。
7 个月之前 回复
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即可解决你的问题。

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();
    }

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

Android之Service学习笔记

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

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

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

@Override
public void onDestroy() {
    super.onDestroy();
    if (mFloatLayout != null) {
        mWindowManager.removeView(mFloatLayout);
    }
}
    重写onDestroy()方法试下。实测 服务里注释掉之后,无论是stopService还是stopSelf都不能停止服务
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
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
我做个后台播放音乐程序 rn通过 远程绑定到一个后台的音乐service,然后启动service播放音乐rnbindService(intent,serviceConnection,Context.BIND_AUTO_CREATE);rnrnrn播放音乐后,当前的activity是可以控制停止和关闭音乐的,当我点了下 手机上的回到桌面的按钮,然后程序退出 回到了桌面,这个时候后台还是在播放音乐了,但是前台的activity应该是已经关闭了,这个时候我又运行了一遍音乐播放程序,打开的avtivity已经不能对后台正在播放的音乐进行操作了 ,而是又打来了一个新的播放程序!!!rnrn请问高手们 怎么没样让他们始终操作一个后台的service啊~~rnrn我想到达到的效果是 ::rnrn播放音乐后,就可以做别的事情,开别的程序了,当我想操作音乐的时候,打开音乐程序就可以操作目前已经在播放的音乐
如何关闭android的一个service
如何停止一个service:                      adb shell                      getprop |grep svc                      看到  [init.svc.thermal-engine]: [running]                      [init.svc.thermalatd]: [st
Android开机无法自启动service
如何开机启动service: 1、开机启动service,首先获取系统广播:android.intent.action.BOOT_COMPLETED。             2、onReceive(Context context, Intent intent)实现要启动的service(切记receive与service要先注册)。 3、Service中onStart
android 的 CountDownTimer 无法关闭的解决方案
一、背景 做个可以自定义播放时间的终端机广告功能,然后封装了一个模块,通过动态绑定去创建对象,在跳离activity的时候cancel这些对象,后面发现竟然有些CountDownTimer 对象 没有被关闭 二、关闭无法关闭 CountDownTimer 的原因 出现这个原因,是因为 SDK 版本过低,这个问题只要更新SDK版本高于等于5.0版本既可 通过查看 CountDownTimer ...
android service关闭时ANR,求救
程序在启动的时候创建了一个Service服务,一直运行于后台,程序退出的时候就关闭该服务,每次退出程序后过一会就打印ANR错误。如下:rn[img=http://img.my.csdn.net/uploads/201212/17/1355712347_6735.png][/img]rn如果看不到图片,请转到这个链接rnhttp://my.csdn.net/my/album/detail/1431668rn不知道是啥原因,请高手指教。。。。
关闭android中其他应用程序的service
我现在正在做一个小的任务管理器,可以获得所有后台正在运行的服务,但我调用stopService关闭不了他,抛出07-27 07:50:05.255: ERROR/AndroidRuntime(391): java.lang.SecurityException: Not allowed to stop service Intent cmp=com.example.android.apis/.app.LocalService rn这个异常。rn 快急死了,请高手们帮我解决一下。
android学习:service的创建,打开、关闭一个service
一、在mainActivity同一目录下建立echoservice,扩展自service,另外要在Androidmanifest里的application中添加上service,Androidstudio会帮你完成这一步 public class EchoService extends Service 二、之后再mainActivity中添加两个Button,startService和sto
注册Android native service, 无法找到该service
我向下面这样注册一个Android native servicern[code=c]rn sp sm = defaultServiceManager();rn status_t ret;rn //register MyService to ServiceManagerrn FpService* srv = new FpService();rn ret = sm->addService(String16("hello.myservice"), srv);rnrn ALOGD("add services: %d", ret);rnrn ProcessState::self()->startThreadPool();rn IPCThreadState::self()->joinThreadPool(true);rn return 0;[/code]rnrn但是我获取service的时候没有我注册的"hello.myservice", 请问什么原因啊?rn[code=c]rndo rn binder = sm->getService(String16("hello.myservice"));rn ALOGD("go into while getService()");rn if (binder != 0) rn break;rn rn usleep(500000);rn while (true);[/code]rnrnandroid系统是5.0. 结果一直打印“go into while getService()”, 说明没有获取到“hello.myservice”。
【Service】android四大组件之Service
本文阅读要点提醒: 1、一个简单的service的例子,了解service生命周期; 2、activity与service的通信的两种方式:Intent,Binder; 3、service与activtiy的通信(或者activity监听service内部变化); 4、servcie的销毁几种情况及总结; 阅读声明:水平有限,主要针对普通玩家,快速查看某一点请直接通过目录,高端玩家随意。
如何关闭Service?
我用ActivityManager的getRunningServices方法获取到了正在运行的服务,我怎样把其中的服务给关掉?谢谢
hive service的启动及关闭
原文转自   it技术擎 #启动metastore服务 hive --service metastore & #启动hiveserver服务 hive --service hiveserver2 & 关闭的命令是 hive --service stop
Android Service
Android Service用法Dome 引用MediaPlayer
Service android
Service android
Android service
android 后台服务定时更新前台Activity Ui 通过广播
android service
NULL 博文链接:https://xuyitao.iteye.com/blog/1611326
android Service
android Service android Service
android service 之一 (start service)
NULL 博文链接:https://rainbow702.iteye.com/blog/1142685
Android Service学习笔记--Service生命周期
-
Android的Service基础---Service的生命周期
第一步:创建服务类MyService,代码如下:// btnStartService = (Button) findViewById(R.id.btnStartService); // btnStopService = (Button) findViewById(R.id.btnStopService); package com.example.yangjian.service; imp
android 模拟器无法关闭,进程也无法结束解决方法
通过命令启动模拟器,如下: emulator -avd 模拟器名称 -noaudio
analysis service 无法远程连接
在SQL Server Management Studio里无法接连到服务器上的 analysis service.rn
@Service无法注入问题
1、扫描路径没扫到;2、在controller层定义,仅第一个字母修改,后面字母不能修改,不然也是没法注入的
windows service 无法访问网络
客户机器上面安装了360,和ISA服务器.然后软件的登录是经过一个windows service进行网络访问.却怎么也无法访问网络.rnrn远程过去后退出了360.关闭了windows的防火墙.依然无法访问.rnrn然后用相同的登录代码发了一个exe过去.却能正常访问数据rnrn为什么exe能正常访问网络.而写的service服务却不能访问网络?两者调用的代码是一样的!rnrn是不是ISA服务器可以设置局域网络中的电脑某些服务不能有访问权?rnrn如果有. 怎么设置?详细点.要发给客户的网管解除rnrn2. 为什么windows服务很容易被杀软给误报为病毒. 只是有个网络访问权呀?rnrnrnrnrnrnrn试试邀请,没有用过.
无法创建Web Service
Web Service和ASP.NET Web服务是不是同一个东东?用C#创建ASP.NET Web服务时出现以下错误:rn尝试创建Web项目或打开位于URL "http://localhost/WebService1"的Web项目时,Web服务器报告了以下错误。"HTTP/1.1 403 Forbidden"。
shiroRealm无法注入service
代码是这样的rn[img=https://img-bbs.csdn.net/upload/201806/04/1528103704_448845.png][/img][img=https://img-bbs.csdn.net/upload/201806/04/1528103988_499760.png][/img][img=https://img-bbs.csdn.net/upload/201806/04/1528103995_472780.png][/img][img=https://img-bbs.csdn.net/upload/201806/04/1528104000_775966.png][/img][img=https://img-bbs.csdn.net/upload/201806/04/1528104006_124033.png][/img][img=https://img-bbs.csdn.net/upload/201806/04/1528104012_167524.png][/img]rnrn看网上说 在contextConfigLocation里面吧spring-mvc加进去一起加载,但是我写的spring-*,我命名全是spring-开头的,按理说这样直接就加载了啊 为啥还是service注入失败呢 rnrn
Terminal Service 无法自动启动?
有台服务器上的Terminal Service 不能自动启动,在Service 里我把启动类型设为Auto,但重启以后又变成了Manual,必须手动启动以后才能用,请问是怎么回事啊?谢谢!!!
Android-无法获得Service内容-Service通信
问题: 当程序通过startService()和stopService()启动、关闭Service时Service与访问者不存在太多关联,因此service与用户之间无法进行通信、交换数据。 解决: 如果Service 和访问者之间需要进行方法调用或数据交互,则应使用 bindService()和unbindService() 方法启动、关闭Service。 BindService使用: ...
一般形式的开启关闭Service
本课程主要分为从九个章节完成,学习完本系列课程后,学员将会在Android开发方面整体上有一个较大的提升,对Android开发体系和开发技术有更深层次的理解,能从基本的开发者进入到一个较高水平的开发者。学习完本课程,能够进行使用JNI技术进行NDK开发,对Android应用有一定的性能优化能力,对技术的钻研能力能够增强,独立解决技术难点的能力有较大提升。
service 在activity关闭后弹出对话框
service 在activity关闭后弹出对话框
关闭后台服务Service关不了?
@Overridern public void onDestroy()rn rn MessageService.this.stopSelf();rn messageThread.isRunning = false;rn System.exit(0);rn super.onDestroy();rn rn我在销毁方法里写上了这些代码,在其他Activity里关闭服务(stopService(new Intent(MainOptionActivity.this,MessageService.class));),试了很多代码都不行啊?rn大神门 你们的见解??
rex 远程启动 关闭service
[root@node01 my-first-rex-project]# cat Rexfile use Rex -feature => ['1.0']; user "root"; password "1234567"; group myservers => "192.168.137.3"; desc "Get the uptime of all servers"; task "uptime
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 中如何activity如何关闭一个开启自启动的service
开机自启动一个定时传送地理位置的serivce,然后可以在启动程序后acivity中点击关闭将此service关闭。我知道开机启动service怎么去做但现在不知道如何在acitiviy中去关闭这个开启直接启动的serivce? 特请高人指定
android service 启动和关闭不在同一个Activity的问题
在android2.3版本上可以在一个的activity中直接stopService()关闭同一应用另外一个activity启动的service,但是把sdk换成4.0.3以上的版本,就会抛出异常,这是我问题的来源。
visio无法关闭问题
visio的绘图过程中碰到:“你不能退出visio因为某程序正在处理来自visio的事件,如果VBA处于断点可重置VBA,然后在退出”的错误窗口提示。。这样visio导致无法正常退出,十分头疼。。 (最开始是报剪切板出错的提示信息。。)   查找各方资料后:确认此问题是由于打开了synergy的原因,因为synergy需要共享剪切板。。解决之。...
收藏夹无法关闭,灰色!
解决部分系统安装后IE收藏夹无法关闭,显示灰色不可选!
excel导出进程无法关闭
我现在用C#写了一个winform应用程序,我现在是用线程导出Excel数据。数据可以成功导出,但是在任务管理器里的excel.exe进程就是无法随着数据导出结束而结束,怎么办呢?每导出一份数据就多一个excel.exe进程,郁闷
无法关闭数据库
[code=Java]rnpackage DatabaseManager;rnrnimport java.sql.Connection;rnimport java.sql.ResultSet;rnimport java.sql.Statement;rnrnimport javax.naming.Context;rnimport javax.naming.InitialContext;rnimport javax.sql.DataSource;rnrnpublic class DBBean rnrn Connection conn = null;rn Statement stat = null;rn ResultSet rs = null;rn rn public DBBean()rn rn rn rn public void getDBConnection()rn rn final String CON_JNDI_NAME = "jdbc/Equipment";rn tryrn rn InitialContext ctx = new InitialContext();rn Context envCtx = (Context)ctx.lookup("java:comp/env");rn DataSource ds = (DataSource)envCtx.lookup(CON_JNDI_NAME);rn conn = ds.getConnection();rn if(conn==null)rn System.out.println("DBBean的conn为空!");rn elsern System.out.println("DBBean的conn不为空!");rn rn catch(Exception ex)rn rn ex.printStackTrace();rn rn rnrn public ResultSet query(String sql)rn rn tryrn rn stat=conn.createStatement();rn if(stat==null)rn System.out.println("query的stat为空");rn elsern System.out.println("query的stat不为空");rn rs=stat.executeQuery(sql);rn if(rs==null)rn System.out.println("query的rs为空");rn elsern System.out.println("query的rs不为空");rn rn catch(Exception ex)rn rn ex.printStackTrace();rn rn return rs;rn rn rn public ResultSet getResultset()rn rn return rs;rn rn rn public void DBclose()rn rn tryrn rn if(rs!=null)rn rn rs.close();rn if(rs!=null)rn System.out.println("DBclose的rs不为空");rn elsern System.out.println("DBclose的rs为空");rn rn if(stat!=null)rn rn stat.close();rn if(stat!=null)rn System.out.println("DBclose的stat不为空");rn elsern System.out.println("DBclose的stat为空");rn rn if(conn!=null)rn rn conn.close();rn if(conn!=null)rn System.out.println("DBclose的conn不为空");rn elsern System.out.println("DBclose的conn为空");rn rn rn catch(Exception ex)rn rn ex.printStackTrace();rn rn rnrn[/code]rnDBclose的rs不为空rnDBclose的stat不为空rnDBclose的conn不为空
相关热词 c# stream 复制 android c# c#监测窗口句柄 c# md5 引用 c# 判断tabtip 自己写个浏览器程序c# c# 字符串变成整数数组 c#语言编程写出一个方法 c# 转盘抽奖 c#选中treeview