我在Android中写了一个简单的服务。只要应用程序正在运行,它就会运行,当应用程序关闭时就会停止。我的代码如下。
public class WitoService extends Service {
private MediaPlayer mp;
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
//return super.onStartCommand(intent, flags, startId);
mp=MediaPlayer.create(this, Settings.System.DEFAULT_RINGTONE_URI);
mp.setLooping(true);
mp.start();
return START_STICKY;
}
@Override
public void onDestroy() {
super.onDestroy();
mp.stop();
}
}
舱单文件条目
<service android:name=".WitoService"/>
服务调用代码。
if(!serviceRunning) {
startService(new Intent(this, WitoService.class));
serviceRunning=true;
}else {
stopService(new Intent(this, WitoService.class));
serviceRunning=false;
}
enter code here
当你的应用目标大于android O时,这是正常的行为。为了让你的服务保持活力,应该让foregroud服务和通知用户。你可以查看这里 https:/developer.android.comaboutversionsoreobbackground#services。
当一个应用程序处于前台时,它可以自由创建和运行前台和后台服务。当一个应用程序进入后台时,它有一个几分钟的窗口,在这个窗口中,它仍然可以创建和使用服务。在该窗口结束时,应用程序被认为是闲置的。此时,系统会停止应用的后台服务,就像应用调用了服务的Service.stopSelf()方法一样。