简介
后台服务在系统内存不足时有被回收的可能,为了保活服务我们可以选择将服务写为前台服务。前台服务优先级更高、不易被回收,除非停止服务。
效果
具体代码
MyService.java
public class MyServices extends Service {
private static final String TAG = "amy";
@Override
public void onCreate() {
super.onCreate();
Log.d(TAG,"onCreate");
}
@RequiresApi(api = Build.VERSION_CODES.O)
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.d(TAG,"onStartCommand");
NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
Intent intent1 = new Intent(this,MainActivity.class);
PendingIntent intent2 = PendingIntent.getActivity(this,0,intent1,0);
Notification notification = new Notification.Builder(this)
.setSmallIcon(R.mipmap.bq1)
.setContentTitle("前台服务")
.setContentText("播放器用的是前台服务")
.setContentIntent(intent2)
.build();
startForeground(110,notification);
return super.onStartCommand(intent, flags, startId);
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
Log.d(TAG,"onBind");
return null;
}
}
Activity.java
public class ServicesActivity extends AppCompatActivity {
Intent intent;
@RequiresApi(api = Build.VERSION_CODES.O)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_services);
//参数一:上下文 参数二:自定义服务类.class
intent = new Intent(this,MyServices.class);
}
public void startFroatServer(View view) {
startService(intent);
}
public void stopFroatServer(View view) {
stopService(intent);
}
}