android: Move logging into it's own repository class.

Logs will be maintained and appended even when the main UI is not bound to the service.

This also lets us log without filling a Handler with a bunch of messages we might just throw away anyway.
This commit is contained in:
Colin Edwards
2024-01-04 17:41:26 -06:00
parent 5d122c3bc8
commit 324bd95c91
5 changed files with 56 additions and 43 deletions

View File

@@ -3,7 +3,6 @@
package org.musicpd;
import android.annotation.TargetApi;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
@@ -21,15 +20,18 @@ import android.os.PowerManager;
import android.os.RemoteCallbackList;
import android.os.RemoteException;
import android.util.Log;
import android.widget.RemoteViews;
import androidx.core.app.ServiceCompat;
import org.musicpd.data.LoggingRepository;
import org.musicpd.ui.SettingsActivity;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import javax.inject.Inject;
import dagger.hilt.android.AndroidEntryPoint;
@AndroidEntryPoint
public class Main extends Service implements Runnable {
private static final String TAG = "Main";
private static final String WAKELOCK_TAG = "mpd:wakelockmain";
@@ -39,7 +41,6 @@ public class Main extends Service implements Runnable {
private static final int MAIN_STATUS_STARTED = 1;
private static final int MSG_SEND_STATUS = 0;
private static final int MSG_SEND_LOG = 1;
private Thread mThread = null;
private int mStatus = MAIN_STATUS_STOPPED;
@@ -50,6 +51,9 @@ public class Main extends Service implements Runnable {
private boolean mPauseOnHeadphonesDisconnect = false;
private PowerManager.WakeLock mWakelock = null;
@Inject
LoggingRepository logging;
static class MainStub extends IMain.Stub {
private Main mService;
MainStub(Main service) {
@@ -98,9 +102,6 @@ public class Main extends Service implements Runnable {
break;
}
break;
case MSG_SEND_LOG:
cb.onLog(arg1, (String) obj);
break;
}
} catch (RemoteException e) {
}
@@ -111,7 +112,7 @@ public class Main extends Service implements Runnable {
private Bridge.LogListener mLogListener = new Bridge.LogListener() {
@Override
public void onLog(int priority, String msg) {
sendMessage(MSG_SEND_LOG, priority, 0, msg);
logging.addLogItem(priority, msg);
}
};
@@ -303,7 +304,6 @@ public class Main extends Service implements Runnable {
public void onStarted();
public void onStopped();
public void onError(String error);
public void onLog(int priority, String msg);
}
private boolean mBound = false;
@@ -327,11 +327,6 @@ public class Main extends Service implements Runnable {
public void onError(String error) throws RemoteException {
mCallback.onError(error);
}
@Override
public void onLog(int priority, String msg) throws RemoteException {
mCallback.onLog(priority, msg);
}
};
private final ServiceConnection mServiceConnection = new ServiceConnection() {