android - 关于startService的一个神奇的问题

浏览:69日期:2022-11-08

问题描述

场景:现在写了两个应用AB:

A : 有一个Service:`com.test.MyService.class`B :onClicke点击事件中调起A中的服务。测试环境:魅族4,魅蓝3。

问题:

1)在A程序运行的情况下,B程序运行下,B点击去调起 MyService服务,正常。2)在A程序被杀死的情况下,即没有运行,B程序点击去调起服务,不成功,没有任何的Log,Toast输出。3)在A程序被杀死的情况下,即没有运行,用ADB命令去调起服务:不成功,ADB输出,没有找到这个服务。4)把这个程序A放在/system/app/下,让它成为一个系统的应用,然后,在杀死程序的情况下,调起成功。

后续

公司的大神说,他能直接调起来,不用放在/system/app/下。代码我查了好多次,我们两个的代码一样的。然后我注意到一点我们的手机系统不同,他的是华为,我的是魅族。有没有人跟我遇到一样的问题?求大神解释一下咯~

问题解答

回答1:

经过验证,魅族系统是不支持应用层的服务被直接唤醒。

回答2:

我感觉你这个服务最好独立在一个新进程中:service进程中。服务保活或者重连有些机制的,最简单是让onStartCommand返回值是START_REDELIVER_INTENT。如果建立的Binder连接,Binder也有些重连机制的。更多的保活方式看网上的文章,很多的

回答3:

我推断是第三方系统防止唤醒做的操作,按原生的是可以调用起来的,不然service有什么用.

相关文章: