mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-09-20 04:35:32 +00:00
remove usage of Parcelable for AlarmManager, because in N it also won't work
More information: https://www.reddit.com/r/androiddev/comments/4tm8i6/were_on_the_android_engineering_team_and_built/d5ilrxo
This commit is contained in:
+2
@@ -8,6 +8,8 @@ public class AppConstants {
|
||||
// Intent extra fields
|
||||
public final static String COURSE_AREA_UUID_KEY = "courseUuid";
|
||||
public final static String RACE_ID_KEY = "raceUuid";
|
||||
public final static String INTENT_EXTRA_LONG = "intent.extra.long";
|
||||
public final static String INTENT_EXTRA_STRING = "intent.extra.string";
|
||||
public final static String SERVICE_UNIQUE_ID = "serviceUID";
|
||||
public final static String STARTPROCEDURE_SPECIFIC_EVENT_ID = "startProcedureSpecificEventId";
|
||||
public final static String EXTRAS_RACE_STATE_EVENT = "raceStateEvent";
|
||||
|
||||
-66
@@ -1,66 +0,0 @@
|
||||
package com.sap.sailing.racecommittee.app.domain.impl;
|
||||
|
||||
import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
|
||||
import com.sap.sailing.domain.abstractlog.race.state.RaceStateEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.state.impl.RaceStateEventImpl;
|
||||
import com.sap.sailing.domain.abstractlog.race.state.impl.RaceStateEvents;
|
||||
import com.sap.sse.common.TimePoint;
|
||||
import com.sap.sse.common.impl.MillisecondsTimePoint;
|
||||
|
||||
public class RaceStateEventImplParcel implements Parcelable {
|
||||
|
||||
public static final Creator<RaceStateEventImplParcel> CREATOR = new Creator<RaceStateEventImplParcel>() {
|
||||
@Override
|
||||
public RaceStateEventImplParcel createFromParcel(Parcel in) {
|
||||
return new RaceStateEventImplParcel(in);
|
||||
}
|
||||
|
||||
@Override
|
||||
public RaceStateEventImplParcel[] newArray(int size) {
|
||||
return new RaceStateEventImplParcel[size];
|
||||
}
|
||||
};
|
||||
private long timePoint;
|
||||
private String eventName;
|
||||
|
||||
public RaceStateEventImplParcel(RaceStateEvent raceStateEvent) {
|
||||
this.timePoint = raceStateEvent.getTimePoint().asMillis();
|
||||
this.eventName = raceStateEvent.getEventName().name();
|
||||
}
|
||||
|
||||
private RaceStateEventImplParcel(Parcel in) {
|
||||
timePoint = in.readLong();
|
||||
eventName = in.readString();
|
||||
}
|
||||
|
||||
private TimePoint getTimePoint() {
|
||||
return new MillisecondsTimePoint(timePoint);
|
||||
}
|
||||
|
||||
public RaceStateEvents getEventName() {
|
||||
return RaceStateEvents.valueOf(eventName);
|
||||
}
|
||||
|
||||
public RaceStateEvent getRaceStateEvent() {
|
||||
return new RaceStateEventImpl(getTimePoint(), getEventName());
|
||||
}
|
||||
|
||||
@Override
|
||||
public int describeContents() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeToParcel(Parcel dest, int flags) {
|
||||
dest.writeLong(timePoint);
|
||||
dest.writeString(eventName);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "RaceStateEventImpl [timePoint=" + getTimePoint() + ", eventName=" + getEventName() + "]";
|
||||
}
|
||||
|
||||
}
|
||||
+11
-12
@@ -31,6 +31,7 @@ import com.sap.sailing.domain.abstractlog.race.impl.RaceLogChangedVisitor;
|
||||
import com.sap.sailing.domain.abstractlog.race.state.RaceState;
|
||||
import com.sap.sailing.domain.abstractlog.race.state.RaceStateEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.state.RaceStateEventScheduler;
|
||||
import com.sap.sailing.domain.abstractlog.race.state.impl.RaceStateEventImpl;
|
||||
import com.sap.sailing.domain.abstractlog.race.state.impl.RaceStateEvents;
|
||||
import com.sap.sailing.racecommittee.app.AppConstants;
|
||||
import com.sap.sailing.racecommittee.app.R;
|
||||
@@ -38,13 +39,13 @@ import com.sap.sailing.racecommittee.app.data.DataManager;
|
||||
import com.sap.sailing.racecommittee.app.data.DataStore;
|
||||
import com.sap.sailing.racecommittee.app.data.ReadonlyDataManager;
|
||||
import com.sap.sailing.racecommittee.app.domain.ManagedRace;
|
||||
import com.sap.sailing.racecommittee.app.domain.impl.RaceStateEventImplParcel;
|
||||
import com.sap.sailing.racecommittee.app.services.polling.RaceLogPollingService;
|
||||
import com.sap.sailing.racecommittee.app.services.sending.RaceEventSender;
|
||||
import com.sap.sailing.racecommittee.app.ui.activities.LoginActivity;
|
||||
import com.sap.sailing.server.gateway.serialization.JsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.CompetitorJsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.racelog.impl.RaceLogEventSerializer;
|
||||
import com.sap.sse.common.impl.MillisecondsTimePoint;
|
||||
|
||||
public class RaceStateService extends Service {
|
||||
|
||||
@@ -208,11 +209,6 @@ public class RaceStateService extends Service {
|
||||
break;
|
||||
|
||||
default:
|
||||
if (intent.getIntExtra(Intent.EXTRA_ALARM_COUNT, -1) != -1) {
|
||||
ExLog.w(this, TAG, "Unexpected ALARM_COUNT extra found.");
|
||||
return;
|
||||
}
|
||||
|
||||
String id = intent.getStringExtra(AppConstants.RACE_ID_KEY);
|
||||
ManagedRace race = dataManager.getDataStore().getRace(id);
|
||||
if (race == null) {
|
||||
@@ -222,10 +218,12 @@ public class RaceStateService extends Service {
|
||||
|
||||
switch (action) {
|
||||
case AppConstants.INTENT_ACTION_ALARM_ACTION:
|
||||
RaceStateEventImplParcel stateEvent = intent.getParcelableExtra(AppConstants.EXTRAS_RACE_STATE_EVENT);
|
||||
ExLog.i(this, TAG, String.format("Processing %s", stateEvent.toString()));
|
||||
race.getState().processStateEvent(stateEvent.getRaceStateEvent());
|
||||
clearAlarmByName(race, stateEvent.getEventName());
|
||||
long timePoint = intent.getLongExtra(AppConstants.INTENT_EXTRA_LONG, 0);
|
||||
String eventName = intent.getStringExtra(AppConstants.INTENT_EXTRA_STRING);
|
||||
RaceStateEvent event = new RaceStateEventImpl(new MillisecondsTimePoint(timePoint), RaceStateEvents.valueOf(eventName));
|
||||
ExLog.i(this, TAG, String.format("Processing %s", event.toString()));
|
||||
race.getState().processStateEvent(event);
|
||||
clearAlarmByName(race, event.getEventName());
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -327,10 +325,11 @@ public class RaceStateService extends Service {
|
||||
}
|
||||
|
||||
private PendingIntent createAlarmPendingIntent(ManagedRace managedRace, RaceStateEvent event) {
|
||||
Intent intent = new Intent(this, RaceStateService.class);
|
||||
Intent intent = new Intent().setClass(this, RaceStateService.class);
|
||||
intent.setAction(AppConstants.INTENT_ACTION_ALARM_ACTION);
|
||||
intent.putExtra(AppConstants.RACE_ID_KEY, managedRace.getId());
|
||||
intent.putExtra(AppConstants.EXTRAS_RACE_STATE_EVENT, new RaceStateEventImplParcel(event));
|
||||
intent.putExtra(AppConstants.INTENT_EXTRA_LONG, event.getTimePoint().asMillis());
|
||||
intent.putExtra(AppConstants.INTENT_EXTRA_STRING, event.getEventName().name());
|
||||
return PendingIntent.getService(this, alarmManagerRequestCode++, intent, PendingIntent.FLAG_UPDATE_CURRENT);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user