Android中如何做到Service被关闭后又自动启动

AndroidService启动流程 Service自动重启原理  无论Service启动还是绑定成功后,都会调用ActiveServices的serviceDoneExecutingLocked方法,来看一下这个方法的实现。 void serviceDoneExecutingLocked(ServiceRecord r, int type, int startId, int res) { boolean i... 阅读详情
 

首先要说的是,用户可能把这种做法视为流氓软件。大部分时候,程序员也不想把软件做成流氓软件,没办法,领导说了算。

 

我们在使用某些Android应用的时候,可能会发现安装了某应用以后,会有一些服务也会随之运行。而且,这些服务每次都会随着手机开机而启动。有的服务做的更绝,当用户在运行的服务中手动停止该服务以后,过了一段时间,服务又自动运行了。虽然,从用户的角度来说,这种方式比较流氓。但是,从程序员的角度来说,这是如何做到的呢?经过研究,我发现有一种方式是可以实现的。下面就和大家分享。

 

先简单介绍,一会儿会贴上全部代码。

 

如何做到开机启动?

 

这个比较简单,网上的资料够多,只要实现一个BroadcastReceiver,监听手机启动完成的事件ACTION_BOOT_COMPLETED即可。需要注意的是,好像不能用模拟器,要用手机测试。

 

那如何做到启动一个Service,并且在用户关闭后能自动又启动了呢?

 

一般的,都会在上面说到的BroadcastReceiver的实现里面,监听手机启动完成后,启动一个Service,这是一般的做法。问题是,用户能够在服务里看到这个Service是常驻的。如果用户很敏感,就会停止该Service,甚至直接卸载掉相关的应用。那么,怎样才能定期实现某功能,又不让用户直接看到这个Service呢?聪明的你一定立即就想到了,如果不直接启动Service,而是启动一个timmer,或者alarmManager,然后每隔一段时间去启动Service,做完事情以后关闭掉Service就可以了。

 

 

还是看下面的全部代码吧,不过多解释了。这些代码中还是有不少概念的,不熟悉AlarmManager、PendingIntent、BroadcastReceiver、Service等等这些概念的同学可以百度一下。

 

package com
Android 开机自动启动一个Service 附源码 Android 开机自动启动一个Service 一、Google在更新Android8.0后对Service的权限越发收紧。导致目前想要启动服务必需实现服务的前台化,打开应用才能顺利启动service,否则在服务启动5秒后,系统将自动报错,会弹出一个提示窗口。实际测试得系统的app才能启动service。 二、android studio demo源码测试。 1、添加权限,接受开机完成广播,AndroidManifest.xml源码如下 ... 阅读详情

相关推荐

python + QXDM5高通平台通过自动化截取log方法及代码

python + QXDM5高通平台通过自动化截取log方法及代码

dgzj2001的博客 1768

android 服务自动运行怎么办,怎么解决安卓软件服务停止后又自启?

原标题:怎么解决安卓软件服务停止后又自启?昨天说到安卓软件是如何做到开机启动的?怎么解决?当然流氓的软件并不单单这种,还有更流氓的我明明清理过电视了,关闭程序了结果一会之后这个软件的服务又开起了,后台占着内存把机子弄得卡死了。下面我们就说说这种软件是如何做到服务停止后又自启的,以及怎么解决。描述:退出一个程序后,仍旧在运行的那部分叫做servive(进程),进程在系统内存不够时会被系统杀掉或者被清...

weixin_34505281的博客 1115

从CST到AD:高效PCB阵列设计与介质优化实战

本文详细解析了从CST电磁仿真软件到Altium Designer(AD)的PCB阵列设计全流程,重点解决毫米波天线等精密设计中模型导出、介质优化和阵列构建的核心难题。通过实战技巧,指导工程师高效处理DXF文件导入、复杂铜皮填充、空气介质实现等关键步骤,确保高精度设计从仿真到制造的顺利转换,提升工作效率与设计可靠性。

weixin_28256233的博客 420

android 循环服务,android – 如何停止/启动包含创建无限循环的服务

因此,对于后台,我正在尝试创建一个通过麦克风连续记录并将数据存储在缓冲区中的应用程序.该程序的目标是对缓冲区中的数据执行某种类型的处理并对其进行操作.目前,应用程序只是将数据读入缓冲区并尽快写入.当运行应用程序时,人们会对着麦克风说话,然后听到你刚刚说出来的另一端.现在,我对Android的经验不足以开始发挥作用.我正在进行读写操作,这是一个无限循环.服务如下:public class Audio...

weixin_40008870的博客 289

解析Android中如何做到Service关闭后又自动启动的实现方法

本篇文章是对在Android中如何做到Service关闭后又自动启动的方法进行了详细的分析和介绍。需要的朋友参考下 首先要说的是,用户可能把这种做法视为流氓软件。大部分时候,程序员也不想把软件做成流氓软件,没办法,领导说了算。 我们在使用某些Android应用的时候,可能会发现安装了某应用以后,会有一些服务也会随之运行。而且,这些服务每次都会随着手机开机而启动。有的服务做的更绝,

dong_cc的专栏 858

Android实现开机自启动Service

首先做一个监听器: public class StartBroadcastReceiver extends BroadcastReceiver{ private static final String ACTION = "android.inten

穿拖鞋写程序 1383

android Service重启问题,结合AlarmManager实现定时任务

启动service进行后台任务的时候,我们一般的 做法是启动一个线程,然后通过sleep方法来控制进行定时的任务,如轮询操作,消息推送。这种service的资源是很容易被回收的,虽然service的优先级很高,但是还没有前台的activity的优先极高,所以一旦资源被回收,service会停止运行。         service被回收是我们不能控制的,但是我们可以控制

u013136708的专栏 9104

开机自动启动app,后台保持运行Service

Android启动时,会发出一个系统广播 ACTION_BOOT_COMPLETED,它的字符串常量表示为 “android.intent.action.BOOT_COMPLETED”开机自启动程序,只需要“捕捉”到这个消息再启动你的程序即可,我们要做的是接收这个消息,并实现一个BroadcastReceiver。1 xml 配置在AndroidManifest.xml中Application节点

Misolamiso的博客 3830

Android 定时循环任务实现

AlarmManager实现定时循环后台任务这篇文章使用AlarmManager实现了Android定时后台循环任务。使用场景:项目需要app每隔一段时间就去服务端请求一次接口,从而更新本地保存的信息。AlarmManager简介AlarmManager是Android中常用的一种系统级别的提示服务,在特定的时刻为我们广播一个指定的Intent。简单的说就是我们设定一个时间,然后在该时间到来时,Al

IT_默 9794

Android SERVICE后台服务进程的自启动和保持

http://mobile.51cto.com/abased-374969.htm Service组件在android开发中经常遇到,其经常作为后台服务,需要始终保持运行,负责处理一些必要(见不得人)的任务。而一些安全软件,如360等,会有结束进程的功能,如果不做Service的保持,就会被其杀掉。 如何保持Service的运行状态是现在要说明的,核心就是利用ANDROID的系统广播,这一

forlong401的专栏--有问题上:http://www.androidren.com 2390

DEIF风机主控用户手册-2011.05.1.pdf

丹控DEIF控制器培训手册,DEIF主要用在船舶和风电上面,明阳风电很多风机用DEIF硬件,软件使用codesys。也是开放式编程ST环境,丹控的产品还可以的。

上一篇: Android应用如何反馈Crash报告
下一篇: Android中Webview使用自定义的javascript进行回调
要什么昵称嘛
博客等级 码龄24年 1713粉丝 407原创
评论 47
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值