2012-08-29 57 views
0

我想要在启动时实现一个应该像标准系统服务一样运行的服务,该服务不应该是可以杀死的,并且应该能够在接收来自另一个进程的通知时执行操作。创建类似系统服务的android服务

任何人都可以帮助我创建此类服务的最佳方法(AIDL),如果有任何示例供参考?

回答

1

除非您正在创建自己的系统ROM,否则无法执行此操作。

如果要创建自己的ROM,可以先修改包含服务的apk的AndroidManifest。您需要向manifest节点添加属性:android:sharedUserId="android.uid.system"。这将导致你的APK持有系统ID(这需要APK使用你的平台签名密钥进行签名 - 这就是为什么你需要创建你自己的系统ROM。)

这将允许你的应用程序被考虑(至少在4.x上,我没有在旧版Android上测试过),你的应用程序将会自动启动,自动启动的应用程序本身并没有多大意义,不管你需要按照@febinkk的建议来实现一个BOOT_COMPLETED接收器,或者你可以提供一个自定义的应用程序覆盖(通过在你的AndroidManifest.xml文件的application节点中添加属性android:name="your.package.ApplicationSuperClass")在你的应用程序超类中,你可以重载onCreate()并让它启动您的服务或其他任何需要的。

此外,作为一个系统应用程序,我相信(虽然还没有完全测试),您将无法通过常规手段杀死。

+0

是的,我会创建我自己的ROM没有问题,但我想知道是否有任何这样做的例子? –

+1

我已经扩展我的答案,将其考虑在内。 – mah

+0

是否有任何标准的Android服务可以克隆来开发我自己的服务? –

0

你是不是能够在没有创建自己的ROM创建非killable,免疫服务

+0

是的,我会创建我自己的ROM没有问题,但我想知道是否有任何这样做的例子? –

0

你可以注册过滤器BroadcastReciever为android.intent.action.BOOT_COMPLETED为您服务,电话开始后startForeground() 。这可能不是你正在寻找的东西,但如果你不想创建ROM,这可能是唯一接近的东西。