android 后台自启动如何实现?不是开机自启动!

时间:2021-01-12 15:41:18
  如题,安卓优化大师等第三方软件强行结束进程A。希望结束后马上重启程序A。我现在这个程序有Service 也有Activity。在Service的 onDestroy() 中通过发送广播来启动 却发现无效。
Camera360 365日历等软件却可以。。。另外在安卓优化大师--》自启管理 发现 Camera360 365日历等软件标注有 后台自启动,而我的程序却没有。望指点指点。

12 个解决方案

#1


不需要啊
service自己会启动的
具体我不了解,我告诉你我的做法
我是设置了开机自启动(这个可能没啥关系,也可能有,我先描述)
然后ondestroy里也没有关于发送广播启动本service的方法

我估计是android自己会轮询开启他认为(这个不知道依据是啥)可以开启的后台服务

#2


服务的属性。。。不是开机启动。。

#3


1楼的兄弟 你的service是Activity启动的吗? 我的不行呢

#4


2楼 你说的是不需要设置还是怎么情况?

#5


我只是把我的情况告诉你
我咨询过别人,他们说android只要启动了service,你再kill掉进程他也会自己启动的
当然,是需要时间的,比如30秒

#6


我只是把我的情况告诉你
我咨询过别人,他们说android只要启动了service,你再kill掉进程他也会自己启动的
当然,是需要时间的,比如30秒

#7


这个问题我没有做过
不过想了想,还是有很多办法实现的

1,可以启动两个服务,互相监听对方是否destroy,然后启动对方

2,可以让服务监听时间改变的广播,这样即使被关掉,等下次系统发出时间改变广播时也会启动。

只是临时想到的,没验证可不可以。

还有2楼说是服务的属性,通过设置服务的某个属性就可以使服务不被关闭而常驻内存。不知道是不是这个意思
感觉google不会提供这种功能吧,这对用户来说可不太友好。也没验证过

#8


关注一下,这个后台自启是神马东西

#9


可以在 service的ondestory里startservice 再启动自己以防被杀吧。

#10


服务互启不行,一般杀都是杀的进程。 我感觉监听电量可以实现

#11


具体怎么实现的不清楚,说下我知道的
1.被什么软件管家杀死,是不调用onDestroy的,而是直接杀死进程(验证过,你们可以试试,Process.killProcess)
2.service的onCreate里面的返回值,可以定义一些被杀死后是否重启以及如何启动,可以看看几个返回值
有其他研究的感谢分享

#12


引用 7 楼 limouli 的回复:
这个问题我没有做过
不过想了想,还是有很多办法实现的

1,可以启动两个服务,互相监听对方是否destroy,然后启动对方

2,可以让服务监听时间改变的广播,这样即使被关掉,等下次系统发出时间改变广播时也会启动。

只是临时想到的,没验证可不可以。

还有2楼说是服务的属性,通过设置服务的某个属性就可以使服务不被关闭而常驻内存。不知道是不是这个意思
感觉google不会提供这种功能吧,这对用户来说可不太友好。也没验证过

这两个办法都不行,验证过了,
1.被安全软件kill的时候不会触发destroy,
2.你的时间变化侦听始终得用你自己的APP,启动吧,那么当你的APP被kill之后,这个侦听广播也就随之失效了。

#1


不需要啊
service自己会启动的
具体我不了解,我告诉你我的做法
我是设置了开机自启动(这个可能没啥关系,也可能有,我先描述)
然后ondestroy里也没有关于发送广播启动本service的方法

我估计是android自己会轮询开启他认为(这个不知道依据是啥)可以开启的后台服务

#2


服务的属性。。。不是开机启动。。

#3


1楼的兄弟 你的service是Activity启动的吗? 我的不行呢

#4


2楼 你说的是不需要设置还是怎么情况?

#5


我只是把我的情况告诉你
我咨询过别人,他们说android只要启动了service,你再kill掉进程他也会自己启动的
当然,是需要时间的,比如30秒

#6


我只是把我的情况告诉你
我咨询过别人,他们说android只要启动了service,你再kill掉进程他也会自己启动的
当然,是需要时间的,比如30秒

#7


这个问题我没有做过
不过想了想,还是有很多办法实现的

1,可以启动两个服务,互相监听对方是否destroy,然后启动对方

2,可以让服务监听时间改变的广播,这样即使被关掉,等下次系统发出时间改变广播时也会启动。

只是临时想到的,没验证可不可以。

还有2楼说是服务的属性,通过设置服务的某个属性就可以使服务不被关闭而常驻内存。不知道是不是这个意思
感觉google不会提供这种功能吧,这对用户来说可不太友好。也没验证过

#8


关注一下,这个后台自启是神马东西

#9


可以在 service的ondestory里startservice 再启动自己以防被杀吧。

#10


服务互启不行,一般杀都是杀的进程。 我感觉监听电量可以实现

#11


具体怎么实现的不清楚,说下我知道的
1.被什么软件管家杀死,是不调用onDestroy的,而是直接杀死进程(验证过,你们可以试试,Process.killProcess)
2.service的onCreate里面的返回值,可以定义一些被杀死后是否重启以及如何启动,可以看看几个返回值
有其他研究的感谢分享

#12


引用 7 楼 limouli 的回复:
这个问题我没有做过
不过想了想,还是有很多办法实现的

1,可以启动两个服务,互相监听对方是否destroy,然后启动对方

2,可以让服务监听时间改变的广播,这样即使被关掉,等下次系统发出时间改变广播时也会启动。

只是临时想到的,没验证可不可以。

还有2楼说是服务的属性,通过设置服务的某个属性就可以使服务不被关闭而常驻内存。不知道是不是这个意思
感觉google不会提供这种功能吧,这对用户来说可不太友好。也没验证过

这两个办法都不行,验证过了,
1.被安全软件kill的时候不会触发destroy,
2.你的时间变化侦听始终得用你自己的APP,启动吧,那么当你的APP被kill之后,这个侦听广播也就随之失效了。