remove playerHandler and release wakelock properly
This commit is contained in:
parent
7237003e33
commit
f95e2e89b9
2 changed files with 8 additions and 52 deletions
|
|
@ -52,6 +52,7 @@ import com.dkanada.gramophone.util.Util;
|
||||||
import com.dkanada.gramophone.views.widgets.AppWidgetAlbum;
|
import com.dkanada.gramophone.views.widgets.AppWidgetAlbum;
|
||||||
import com.dkanada.gramophone.views.widgets.AppWidgetCard;
|
import com.dkanada.gramophone.views.widgets.AppWidgetCard;
|
||||||
import com.dkanada.gramophone.views.widgets.AppWidgetClassic;
|
import com.dkanada.gramophone.views.widgets.AppWidgetClassic;
|
||||||
|
import com.google.android.exoplayer2.Player;
|
||||||
|
|
||||||
import org.jellyfin.apiclient.interaction.EmptyResponse;
|
import org.jellyfin.apiclient.interaction.EmptyResponse;
|
||||||
import org.jellyfin.apiclient.interaction.Response;
|
import org.jellyfin.apiclient.interaction.Response;
|
||||||
|
|
@ -123,13 +124,11 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
|
||||||
private MediaSessionCompat mediaSession;
|
private MediaSessionCompat mediaSession;
|
||||||
private PowerManager.WakeLock wakeLock;
|
private PowerManager.WakeLock wakeLock;
|
||||||
|
|
||||||
private PlaybackHandler playerHandler;
|
|
||||||
private Handler uiThreadHandler;
|
private Handler uiThreadHandler;
|
||||||
private ThrottledSeekHandler throttledSeekHandler;
|
private ThrottledSeekHandler throttledSeekHandler;
|
||||||
private QueueHandler queueHandler;
|
private QueueHandler queueHandler;
|
||||||
private ProgressHandler progressHandler;
|
private ProgressHandler progressHandler;
|
||||||
|
|
||||||
private HandlerThread playerHandlerThread;
|
|
||||||
private HandlerThread progressHandlerThread;
|
private HandlerThread progressHandlerThread;
|
||||||
private HandlerThread queueHandlerThread;
|
private HandlerThread queueHandlerThread;
|
||||||
|
|
||||||
|
|
@ -157,6 +156,11 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
|
||||||
@Override
|
@Override
|
||||||
public void onStateChanged(int state) {
|
public void onStateChanged(int state) {
|
||||||
notifyChange(STATE_CHANGED);
|
notifyChange(STATE_CHANGED);
|
||||||
|
|
||||||
|
if (state == Player.STATE_ENDED) {
|
||||||
|
playingNotification.stop();
|
||||||
|
releaseWakeLock();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -236,10 +240,6 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
|
||||||
|
|
||||||
queueManager = new QueueManager(this, queueCallbacks);
|
queueManager = new QueueManager(this, queueCallbacks);
|
||||||
|
|
||||||
playerHandlerThread = new HandlerThread(PlaybackHandler.class.getName());
|
|
||||||
playerHandlerThread.start();
|
|
||||||
playerHandler = new PlaybackHandler(this, playerHandlerThread.getLooper());
|
|
||||||
|
|
||||||
progressHandlerThread = new HandlerThread(ProgressHandler.class.getName());
|
progressHandlerThread = new HandlerThread(ProgressHandler.class.getName());
|
||||||
progressHandlerThread.start();
|
progressHandlerThread.start();
|
||||||
progressHandler = new ProgressHandler(this, progressHandlerThread.getLooper());
|
progressHandler = new ProgressHandler(this, progressHandlerThread.getLooper());
|
||||||
|
|
@ -421,9 +421,6 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
|
||||||
}
|
}
|
||||||
|
|
||||||
private void restoreState() {
|
private void restoreState() {
|
||||||
notifyChange(SHUFFLE_MODE_CHANGED);
|
|
||||||
notifyChange(REPEAT_MODE_CHANGED);
|
|
||||||
|
|
||||||
queueHandler.removeMessages(LOAD_QUEUE);
|
queueHandler.removeMessages(LOAD_QUEUE);
|
||||||
queueHandler.sendEmptyMessage(LOAD_QUEUE);
|
queueHandler.sendEmptyMessage(LOAD_QUEUE);
|
||||||
}
|
}
|
||||||
|
|
@ -444,9 +441,6 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
|
||||||
}
|
}
|
||||||
|
|
||||||
private void releaseResources() {
|
private void releaseResources() {
|
||||||
playerHandler.removeCallbacksAndMessages(null);
|
|
||||||
playerHandlerThread.quitSafely();
|
|
||||||
|
|
||||||
progressHandler.removeCallbacksAndMessages(null);
|
progressHandler.removeCallbacksAndMessages(null);
|
||||||
progressHandlerThread.quitSafely();
|
progressHandlerThread.quitSafely();
|
||||||
|
|
||||||
|
|
@ -646,11 +640,7 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
|
||||||
PreferenceUtil.getInstance(this).setProgress(getSongProgressMillis());
|
PreferenceUtil.getInstance(this).setProgress(getSongProgressMillis());
|
||||||
break;
|
break;
|
||||||
case QUEUE_CHANGED:
|
case QUEUE_CHANGED:
|
||||||
// because playing queue size might have changed
|
|
||||||
updateMediaSessionMetadata();
|
updateMediaSessionMetadata();
|
||||||
if (queueManager.getPlayingQueue().size() <= 0) {
|
|
||||||
playingNotification.stop();
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -686,41 +676,6 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final class PlaybackHandler extends Handler {
|
|
||||||
private final WeakReference<MusicService> mService;
|
|
||||||
|
|
||||||
public PlaybackHandler(final MusicService service, @NonNull final Looper looper) {
|
|
||||||
super(looper);
|
|
||||||
mService = new WeakReference<>(service);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void handleMessage(@NonNull final Message msg) {
|
|
||||||
final MusicService service = mService.get();
|
|
||||||
if (service == null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (msg.what) {
|
|
||||||
/*case TRACK_ENDED:
|
|
||||||
// FIXME This isn't used anywhere. This means releaseWakeLock() is never called
|
|
||||||
|
|
||||||
// if there is a timer finished, don't continue
|
|
||||||
if (service.pendingQuit || service.queueManager.getRepeatMode() == QueueManager.REPEAT_MODE_NONE && service.queueManager.isLastTrack()) {
|
|
||||||
if (service.pendingQuit) {
|
|
||||||
service.pendingQuit = false;
|
|
||||||
service.quit();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
service.releaseWakeLock();
|
|
||||||
break;
|
|
||||||
*/
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public class MusicBinder extends Binder {
|
public class MusicBinder extends Binder {
|
||||||
@NonNull
|
@NonNull
|
||||||
public MusicService getService() {
|
public MusicService getService() {
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@ import android.content.Context;
|
||||||
import com.dkanada.gramophone.App;
|
import com.dkanada.gramophone.App;
|
||||||
import com.dkanada.gramophone.model.Song;
|
import com.dkanada.gramophone.model.Song;
|
||||||
import com.dkanada.gramophone.util.PreferenceUtil;
|
import com.dkanada.gramophone.util.PreferenceUtil;
|
||||||
|
import com.google.android.exoplayer2.Player;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
|
@ -30,7 +31,7 @@ public class QueueManager {
|
||||||
private boolean resetCurrentSong = true;
|
private boolean resetCurrentSong = true;
|
||||||
|
|
||||||
private int shuffleMode;
|
private int shuffleMode;
|
||||||
private int repeatMode;
|
private @Player.RepeatMode int repeatMode;
|
||||||
|
|
||||||
public QueueManager(Context context, QueueCallbacks callbacks) {
|
public QueueManager(Context context, QueueCallbacks callbacks) {
|
||||||
this.context = context;
|
this.context = context;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue