首先,您想让您的服务成为前台服务。
与此类似的东西。(我会在您的服务 onCreate 函数中调用此代码。)
Notification notification = new Notification(
R.drawable.ic_dialog_info,
getText(R.string.notification_text),
System.currentTimeMillis());
notification.flags |= Notification.FLAG_AUTO_CANCEL;
Intent activityIntent = new Intent(this, YourMainClass.class);
activityIntent.setAction(Intent.ACTION_MAIN);
activityIntent.addCategory(Intent.CATEGORY_LAUNCHER);
activityIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP
| Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0,
activityIntent, 0);
notification.setLatestEventInfo(this,
getText(R.string.notification_title),
getText(R.string.notification_text), pendingIntent);
startForeground(123, notification);
另一件事是不要将您的服务绑定到您的活动。如果您的活动被终止,您不希望您的服务也终止。如果您的设备内存不足,如果您的活动不在前台,则可能会被杀死。当然,当内存释放时,Android 会尝试重新创建它。但是您的用户体验会很差。如果您的服务未绑定到您的活动并且是前台服务,那么它应该是在垃圾收集期间被操作系统杀死的最后一件事。
您可以使用以下简单的代码来启动服务而不将其绑定到您的活动: 此代码可以在您的活动中调用 onCreate。
Intent service = new Intent(YourContext, YourService.class);
startService(service);
希望这可以帮助你!干杯