我正在使用空活动来启动粘性服务。我使用以下代码启动服务。
@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()调用来杀死应用程序。
答案 0 :(得分:1)
不,实际上。这是Android SDK中的一项新功能 - 杀死应用程序会杀死连接到应用程序的所有进程,甚至应用程序的粘性服务也不会重新启动。(编辑:服务可能不重启,取决于设备;显然粘性服务仍然是某些Android版本的错误功能。)
如果您希望保持服务永久运行,则需要使用ForegroundService,并在抽屉中显示持久性通知。
显然,这是为了确保在用户不知情的情况下不运行任何服务。