在AndroidManifest.xml文件中,将singleuser属性设置为true可以防止在多用户模式下为每个用户创建多个服务。但是,该属性在某些情况下无法正常工作。
为了解决此问题,可以使用以下代码示例:
@Override public int onStartCommand(Intent intent, int flags, int startId) { if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) { startServiceAsUser(new Intent(this, YourService.class), UserHandle.CURRENT); } else { startService(new Intent(this, YourService.class)); }
return START_STICKY;
}
这段代码在Android 5.0及以上版本中使用UserHandle.CURRENT参数启动服务,以确保在多用户模式下只创建一个服务。
另外,也可以在服务类中使用android.os.Process.myUserHandle()获取当前用户的用户句柄,并根据需要进行处理。