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.AppWidgetCard;
|
||||
import com.dkanada.gramophone.views.widgets.AppWidgetClassic;
|
||||
import com.google.android.exoplayer2.Player;
|
||||
|
||||
import org.jellyfin.apiclient.interaction.EmptyResponse;
|
||||
import org.jellyfin.apiclient.interaction.Response;
|
||||
|
|
@ -123,13 +124,11 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
|
|||
private MediaSessionCompat mediaSession;
|
||||
private PowerManager.WakeLock wakeLock;
|
||||
|
||||
private PlaybackHandler playerHandler;
|
||||
private Handler uiThreadHandler;
|
||||
private ThrottledSeekHandler throttledSeekHandler;
|
||||
private QueueHandler queueHandler;
|
||||
private ProgressHandler progressHandler;
|
||||
|
||||
private HandlerThread playerHandlerThread;
|
||||
private HandlerThread progressHandlerThread;
|
||||
private HandlerThread queueHandlerThread;
|
||||
|
||||
|
|
@ -157,6 +156,11 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
|
|||
@Override
|
||||
public void onStateChanged(int state) {
|
||||
notifyChange(STATE_CHANGED);
|
||||
|
||||
if (state == Player.STATE_ENDED) {
|
||||
playingNotification.stop();
|
||||
releaseWakeLock();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -236,10 +240,6 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
|
|||
|
||||
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.start();
|
||||
progressHandler = new ProgressHandler(this, progressHandlerThread.getLooper());
|
||||
|
|
@ -421,9 +421,6 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
|
|||
}
|
||||
|
||||
private void restoreState() {
|
||||
notifyChange(SHUFFLE_MODE_CHANGED);
|
||||
notifyChange(REPEAT_MODE_CHANGED);
|
||||
|
||||
queueHandler.removeMessages(LOAD_QUEUE);
|
||||
queueHandler.sendEmptyMessage(LOAD_QUEUE);
|
||||
}
|
||||
|
|
@ -444,9 +441,6 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
|
|||
}
|
||||
|
||||
private void releaseResources() {
|
||||
playerHandler.removeCallbacksAndMessages(null);
|
||||
playerHandlerThread.quitSafely();
|
||||
|
||||
progressHandler.removeCallbacksAndMessages(null);
|
||||
progressHandlerThread.quitSafely();
|
||||
|
||||
|
|
@ -646,11 +640,7 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
|
|||
PreferenceUtil.getInstance(this).setProgress(getSongProgressMillis());
|
||||
break;
|
||||
case QUEUE_CHANGED:
|
||||
// because playing queue size might have changed
|
||||
updateMediaSessionMetadata();
|
||||
if (queueManager.getPlayingQueue().size() <= 0) {
|
||||
playingNotification.stop();
|
||||
}
|
||||
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 {
|
||||
@NonNull
|
||||
public MusicService getService() {
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import android.content.Context;
|
|||
import com.dkanada.gramophone.App;
|
||||
import com.dkanada.gramophone.model.Song;
|
||||
import com.dkanada.gramophone.util.PreferenceUtil;
|
||||
import com.google.android.exoplayer2.Player;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
|
|
@ -30,7 +31,7 @@ public class QueueManager {
|
|||
private boolean resetCurrentSong = true;
|
||||
|
||||
private int shuffleMode;
|
||||
private int repeatMode;
|
||||
private @Player.RepeatMode int repeatMode;
|
||||
|
||||
public QueueManager(Context context, QueueCallbacks callbacks) {
|
||||
this.context = context;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue