Android bindService或/和startService

Jov*_*van 9 android

我想创建Service using bindService 方法.但是,当我关闭一个Activity时,我的服务被销毁了,我不希望这样.

我尝试使用startForeground(NOTIFICATION_ID, notification);服务onCreate 将服务放在前台 ,但服务仍然会破坏.

现在我尝试使用call两个方法同时启动Service:

    Intent bindIntent= new Intent(this, ServiceC.class);
    startService(bindIntent);
    bindService(bindIntent, onService, BIND_AUTO_CREATE);
Run Code Online (Sandbox Code Playgroud)

通过调用这两个方法Service不会被破坏.我的应用程序正常使用此方法.

有人可以向我解释这是否是一个好方法,或者如果不是,请你能否解释为什么startForeground(NOTIFICATION_ID, notification);不起作用?

使用bindService的最佳方法是什么,但同时我不希望服务自行销毁.

big*_*nes 8

我使用相同的解决方案,这是一个合法的解决方案.来自服务参考:

服务既可以启动,也可以绑定连接.在这种情况下,只要系统启动或者使用Context.BIND_AUTO_CREATE标志有一个或多个连接,系统就会保持服务运行.一旦这些情况都不成立,就会调用服务的onDestroy()方法并有效终止服务.

startForeground() 没有工作,因为它只是试图阻止服务被系统杀死,但它的生命周期是另一回事:如果没有什么更多的绑定到该服务并且它没有启动,它就会停止.