在Android 11上,Android操作系统限制应用程序在启动后自动启动活动或服务。为了解决这个问题,开发人员需要使用后台限制例外或前台服务来实现在设备启动时自动启动活动或服务。下面是通过前台服务来实现启动服务的代码示例。
public class MyService extends Service { @Override public int onStartCommand(Intent intent, int flags, int startId) { //Do Something Here return super.onStartCommand(intent, flags, startId); }
@Override public IBinder onBind(Intent intent) { return null; }
@Override public void onDestroy() { super.onDestroy(); } }
public class BootUpReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if (Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())) { Intent serviceIntent = new Intent(context, MyService.class); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { context.startForegroundService(serviceIntent); } else { context.startService(serviceIntent); } } } }
注意:前台服务类型在Android 10及以上版本才支持。这种方法仅适用于需要在设备启动