Хорошо, вот мой код, я пытаюсь создать работающую службу, даже когда приложение закрыто.
В основном действии я создал новую кнопку и вызвал startMyService (), чтобы запустить service следующим образом:
public void startMyService(View view) {
Intent intent = new Intent(MainActivity.this, MyService.class);
startService(intent);
}
класс обслуживания прост:
public class MyService extends Service {
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.e("MyService", "service is running");
final Uri uri = Settings.System.DEFAULT_RINGTONE_URI;
final Context x =(Context) MyService.this;
new Thread(new Runnable() {
@Override
public void run() {
MediaPlayer player = MediaPlayer.create(x,uri);
player.setLooping(true);
player.start();
}
}).start();
Toast.makeText(getApplicationContext(), "Service is running", Toast.LENGTH_LONG).show();
return START_STICKY;
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onDestroy() {
super.onDestroy();
Toast.makeText(this, "service done", Toast.LENGTH_SHORT).show();
Log.e("MyService", "service done");
}
}
Конечно, я добавил службу в манифест
<service android:name=".MyService" android:exported="false" android:description="@string/service_description" />
Теперь после запуска , Я нажал кнопку, чтобы запустить службу и закрыть активность, я предполагал, что musi c будет играть в фоновом режиме, но остановился сразу после закрытия активности.
Как решить эту проблему? Как сделать так, чтобы служба продолжала работать, и как заставить ее снова работать после того, как ОС android ее уничтожила?
Я знаю, что существует слишком много тем о службах android и START_STICKY
Однако, как вы видите, это не работает в коде выше, почему?
Примечание. не о воспроизведении musi c в фоновом режиме, я использовал проигрывание musi c, потому что это самый простой способ узнать, когда служба остановлена, это о том, как заставить службу продолжать работать в фоновом режиме, как и должно быть, для Например, для выполнения некоторой задачи, такой как отслеживание изменений данных с сервера.