终止启动粘性服务的活动也会终止该服务



我正在使用一个空活动来启动粘性服务。我使用以下代码启动服务。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Intent service = new Intent(this, MyService.class);
    service.setAction("com.company.test.MyService");
    startService(service);
    finish();
    setContentView(R.layout.activity_transparent);
}

问题是,如果活动被终止,将导致服务重新启动。有没有办法避免这个问题?

注意:我是通过将应用程序从任务管理器中滑动而不是活动的 finish() 调用来终止应用程序的。

不,实际上。这是 Android SDK 中的一项新功能 - 杀死应用程序会杀死连接到该应用程序的所有进程,甚至应用程序的粘性服务也将不再重新启动。(编辑:该服务可能不会重新启动,具体取决于设备;显然粘性服务在某些版本的Android上仍然是一个有缺陷的功能。

如果要使服务永久运行,则需要使用前台服务,并在抽屉中提供持久通知。

显然,这是为了确保在用户不知情的情况下没有服务运行。

最新更新