服务几乎都是在后台运行的,但由于其系统优先级比较低,当系统出现内存不足的情况下,就有可能回收掉正在后台运行的服务。如果希望服务一直保持运行状态,可以考虑使用前台服务。
前台服务跟后台服务最大的区别在于,它会一直有一个正在运行的图标在系统的状态栏显示,下拉状态状态栏后可以看到更加详细的信息,非常类似通知的效果。
public class MyService extends Service {
@Override
public void onCreate() {
super.onCreate();
Intent intent = new Intent(this, MainActivity.class);
PendingIntent pi = PendingIntent.getActivity(this, 0, intent, 0);
Notification notification = new NotificationCompat.Builder(this)
.setContentTitle("content title")
.setContentText("content text")
.setWhen(System.currentTimeMillis())
.setSmallIcon(R.mipmap.ic_launcher)
.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher))
.setContentIntent(pi)
.build();
startForeground(0, notification);
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
}