写个Service的小分支,前台Service的实现
在service需要直接和用户进行交互的情况下,也许合适的做法是把Service的优先级提升到与前台Activity一样高。这可以通过调用Service的startForeground方法来设置。
private void startPlayback() {
int NOTIFICATION_ID = 1;
// 创建一个单击通知时将打开的Activity的Intent
Intent intent = new Intent(this, MainActivity.class);
PendingIntent pi = PendingIntent.getActivity(this, 1, intent, 0);
Notification myNotify = new Notification.Builder(this)
.setSmallIcon(R.drawable.ic_launcher).setTicker("通知")
.setContentTitle("前台service通知标题")
.setContentText("前台service通知内容").setContentIntent(pi)
.getNotification();
// 设置notification的flag,表明在点击通知后,通知并不会消失,也在最右图上仍在通知栏显示图标。
// 这是确保在activity中退出后,状态栏仍有图标可提下拉、点击,再次进入activity。
myNotify.flags |= Notification.FLAG_NO_CLEAR;
startForeground(NOTIFICATION_ID, myNotify);
}
当Service不再需要前台运行的优先级时,可以使用stopForeground方法,把它移到后台,并可以选择是否移除通知,Notification在Service停止或者终止的时候会自动取消的。
public void pausePlayback() {
//移到后台并移出Notification
stopForeground(true);
}