TrackRecordingActivity keeps Track.Id value instead of track object. Every time the track is needed it gets it. Fixes #435.

This commit is contained in:
Román
2020-09-26 16:47:51 +02:00
parent f5308e4287
commit fbb9d21e73
3 changed files with 28 additions and 22 deletions
@@ -55,11 +55,11 @@ import de.dennisguse.opentracks.util.TrackUtils;
*/ */
public class TrackRecordedActivity extends AbstractListActivity implements ChooseActivityTypeDialogFragment.ChooseActivityTypeCaller, ConfirmDeleteDialogFragment.ConfirmDeleteCaller, TrackActivityDataHubInterface { public class TrackRecordedActivity extends AbstractListActivity implements ChooseActivityTypeDialogFragment.ChooseActivityTypeCaller, ConfirmDeleteDialogFragment.ConfirmDeleteCaller, TrackActivityDataHubInterface {
private static final String TAG = TrackRecordedActivity.class.getSimpleName();
public static final String EXTRA_TRACK_ID = "track_id"; public static final String EXTRA_TRACK_ID = "track_id";
public static final String EXTRA_MARKER_ID = "marker_id"; public static final String EXTRA_MARKER_ID = "marker_id";
private static final String TAG = TrackRecordedActivity.class.getSimpleName();
private static final String CURRENT_TAB_TAG_KEY = "current_tab_tag_key"; private static final String CURRENT_TAB_TAG_KEY = "current_tab_tag_key";
// The following are set in onCreate. // The following are set in onCreate.
@@ -67,7 +67,7 @@ public class TrackRecordedActivity extends AbstractListActivity implements Choos
private TrackDataHub trackDataHub; private TrackDataHub trackDataHub;
private ViewPager pager; private ViewPager pager;
private Track track; private Track.Id trackId;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
@@ -100,8 +100,8 @@ public class TrackRecordedActivity extends AbstractListActivity implements Choos
// Update UI // Update UI
this.invalidateOptionsMenu(); this.invalidateOptionsMenu();
if (track != null) { if (trackId != null) {
trackDataHub.loadTrack(track.getId()); trackDataHub.loadTrack(trackId);
} }
} }
@@ -139,6 +139,7 @@ public class TrackRecordedActivity extends AbstractListActivity implements Choos
public boolean onPrepareOptionsMenu(Menu menu) { public boolean onPrepareOptionsMenu(Menu menu) {
menu.findItem(R.id.track_detail_markers).setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); menu.findItem(R.id.track_detail_markers).setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
menu.findItem(R.id.track_detail_resume_track).setVisible(!PreferencesUtils.isRecording(this)); menu.findItem(R.id.track_detail_resume_track).setVisible(!PreferencesUtils.isRecording(this));
Track track = contentProviderUtils.getTrack(trackId);
setTitle(track != null ? track.getName() : ""); setTitle(track != null ? track.getName() : "");
return super.onPrepareOptionsMenu(menu); return super.onPrepareOptionsMenu(menu);
} }
@@ -148,29 +149,29 @@ public class TrackRecordedActivity extends AbstractListActivity implements Choos
Intent intent; Intent intent;
switch (item.getItemId()) { switch (item.getItemId()) {
case R.id.track_detail_share: case R.id.track_detail_share:
intent = IntentUtils.newShareFileIntent(this, track.getId()); intent = IntentUtils.newShareFileIntent(this, trackId);
intent = Intent.createChooser(intent, null); intent = Intent.createChooser(intent, null);
startActivity(intent); startActivity(intent);
return true; return true;
case R.id.track_detail_menu_show_on_map: case R.id.track_detail_menu_show_on_map:
IntentDashboardUtils.startDashboard(this, false, track.getId()); IntentDashboardUtils.startDashboard(this, false, trackId);
return true; return true;
case R.id.track_detail_markers: case R.id.track_detail_markers:
intent = IntentUtils.newIntent(this, MarkerListActivity.class) intent = IntentUtils.newIntent(this, MarkerListActivity.class)
.putExtra(MarkerListActivity.EXTRA_TRACK_ID, track.getId()); .putExtra(MarkerListActivity.EXTRA_TRACK_ID, trackId);
startActivity(intent); startActivity(intent);
return true; return true;
case R.id.track_detail_edit: case R.id.track_detail_edit:
intent = IntentUtils.newIntent(this, TrackEditActivity.class) intent = IntentUtils.newIntent(this, TrackEditActivity.class)
.putExtra(TrackEditActivity.EXTRA_TRACK_ID, track.getId()); .putExtra(TrackEditActivity.EXTRA_TRACK_ID, trackId);
startActivity(intent); startActivity(intent);
return true; return true;
case R.id.track_detail_delete: case R.id.track_detail_delete:
deleteTracks(track.getId()); deleteTracks(trackId);
return true; return true;
case R.id.track_detail_resume_track: case R.id.track_detail_resume_track:
Intent newIntent = IntentUtils.newIntent(TrackRecordedActivity.this, TrackRecordingActivity.class) Intent newIntent = IntentUtils.newIntent(TrackRecordedActivity.this, TrackRecordingActivity.class)
.putExtra(TrackRecordingActivity.EXTRA_TRACK_ID, track.getId()); .putExtra(TrackRecordingActivity.EXTRA_TRACK_ID, trackId);
startActivity(newIntent); startActivity(newIntent);
overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out); overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
finish(); finish();
@@ -204,7 +205,7 @@ public class TrackRecordedActivity extends AbstractListActivity implements Choos
} }
private void handleIntent(Intent intent) { private void handleIntent(Intent intent) {
Track.Id trackId = intent.getParcelableExtra(EXTRA_TRACK_ID); trackId = intent.getParcelableExtra(EXTRA_TRACK_ID);
Marker.Id markerId = intent.getParcelableExtra(EXTRA_MARKER_ID); Marker.Id markerId = intent.getParcelableExtra(EXTRA_MARKER_ID);
if (markerId != null) { if (markerId != null) {
@@ -221,8 +222,6 @@ public class TrackRecordedActivity extends AbstractListActivity implements Choos
Log.e(TAG, "TrackDetailActivity needs EXTRA_TRACK_ID."); Log.e(TAG, "TrackDetailActivity needs EXTRA_TRACK_ID.");
finish(); finish();
} }
track = contentProviderUtils.getTrack(trackId);
} }
public void chooseActivityType(String category) { public void chooseActivityType(String category) {
@@ -232,6 +231,7 @@ public class TrackRecordedActivity extends AbstractListActivity implements Choos
@Override @Override
public void onChooseActivityTypeDone(String iconValue) { public void onChooseActivityTypeDone(String iconValue) {
String category = getString(TrackIconUtils.getIconActivityType(iconValue)); String category = getString(TrackIconUtils.getIconActivityType(iconValue));
Track track = contentProviderUtils.getTrack(trackId);
TrackUtils.updateTrack(this, track, null, category, null, contentProviderUtils); TrackUtils.updateTrack(this, track, null, category, null, contentProviderUtils);
} }
@@ -251,9 +251,9 @@ public class TrackRecordedActivity extends AbstractListActivity implements Choos
public Fragment getItem(int position) { public Fragment getItem(int position) {
switch (position) { switch (position) {
case 0: case 0:
return StatisticsRecordedFragment.newInstance(track.getId()); return StatisticsRecordedFragment.newInstance(trackId);
case 1: case 1:
return IntervalsFragment.newInstance(track.getId()); return IntervalsFragment.newInstance(trackId);
case 2: case 2:
return ChartFragment.newInstance(false); return ChartFragment.newInstance(false);
case 3: case 3:
@@ -51,7 +51,8 @@ public class StatisticsRecordedFragment extends Fragment {
private TrackStatistics trackStatistics; private TrackStatistics trackStatistics;
private String category = ""; private String category = "";
private Track track; private Track.Id trackId;
private ContentProviderUtils contentProviderUtils;
private final SharedPreferences.OnSharedPreferenceChangeListener sharedPreferenceChangeListener = (preferences, key) -> { private final SharedPreferences.OnSharedPreferenceChangeListener sharedPreferenceChangeListener = (preferences, key) -> {
if (PreferencesUtils.isKey(getContext(), R.string.stats_units_key, key) || PreferencesUtils.isKey(getContext(), R.string.stats_rate_key, key)) { if (PreferencesUtils.isKey(getContext(), R.string.stats_units_key, key) || PreferencesUtils.isKey(getContext(), R.string.stats_rate_key, key)) {
@@ -103,9 +104,8 @@ public class StatisticsRecordedFragment extends Fragment {
public void onCreate(@Nullable Bundle savedInstanceState) { public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
Track.Id trackId = getArguments().getParcelable(TRACK_ID_KEY); trackId = getArguments().getParcelable(TRACK_ID_KEY);
ContentProviderUtils contentProviderUtils = new ContentProviderUtils(getContext()); contentProviderUtils = new ContentProviderUtils(getContext());
track = contentProviderUtils.getTrack(trackId);
} }
@Override @Override
@@ -184,6 +184,7 @@ public class StatisticsRecordedFragment extends Fragment {
if (isResumed()) { if (isResumed()) {
getActivity().runOnUiThread(() -> { getActivity().runOnUiThread(() -> {
if (isResumed()) { if (isResumed()) {
Track track = contentProviderUtils.getTrack(trackId);
trackStatistics = track != null ? track.getTrackStatistics() : null; trackStatistics = track != null ? track.getTrackStatistics() : null;
category = track != null ? track.getCategory() : ""; category = track != null ? track.getCategory() : "";
updateUI(); updateUI();
@@ -35,17 +35,22 @@ public class TrackUtils {
} }
public static void updateTrack(Context context, Track track, String name, String category, String description, ContentProviderUtils contentProviderUtils) { public static void updateTrack(Context context, Track track, String name, String category, String description, ContentProviderUtils contentProviderUtils) {
boolean update = false;
if (name != null) { if (name != null) {
track.setName(name); track.setName(name);
update = true;
} }
if (category != null) { if (category != null) {
track.setCategory(category); track.setCategory(category);
track.setIcon(TrackIconUtils.getIconValue(context, category)); track.setIcon(TrackIconUtils.getIconValue(context, category));
update = true;
} }
if (description != null) { if (description != null) {
track.setDescription(description); track.setDescription(description);
update = true;
}
if (update) {
contentProviderUtils.updateTrack(track);
} }
contentProviderUtils.updateTrack(track);
} }
} }