mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-09-30 01:16:40 +00:00
Bug 3251 - RCApp constantly crashes when receiving updates
This commit is contained in:
+76
@@ -0,0 +1,76 @@
|
||||
package com.sap.sailing.android.shared.util;
|
||||
|
||||
import java.util.LinkedList;
|
||||
import java.util.Queue;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.os.AsyncTask;
|
||||
import android.support.v4.content.LocalBroadcastManager;
|
||||
|
||||
public class BroadcastManager {
|
||||
|
||||
private final static String TAG = BroadcastManager.class.getName();
|
||||
|
||||
private static BroadcastManager mInstance;
|
||||
private final Context mContext;
|
||||
private Queue<Intent> mQueue;
|
||||
private DelayedTask mTask;
|
||||
|
||||
private BroadcastManager(Context context) {
|
||||
mContext = context.getApplicationContext();
|
||||
mQueue = new LinkedList<>();
|
||||
}
|
||||
|
||||
public synchronized static BroadcastManager getInstance(Context context) {
|
||||
if (mInstance == null) {
|
||||
mInstance = new BroadcastManager(context);
|
||||
}
|
||||
return mInstance;
|
||||
}
|
||||
|
||||
public void addIntent(Intent intent) {
|
||||
mQueue.add(intent);
|
||||
|
||||
if (mTask == null || !mTask.isRunning()) {
|
||||
mTask = new DelayedTask();
|
||||
mTask.execute();
|
||||
}
|
||||
}
|
||||
|
||||
private class DelayedTask extends AsyncTask<Void, Void, Void> {
|
||||
|
||||
private boolean mIsRunning = false;
|
||||
|
||||
@Override
|
||||
protected Void doInBackground(Void... params) {
|
||||
mIsRunning = true;
|
||||
try {
|
||||
Thread.sleep(1);
|
||||
} catch (InterruptedException e) {
|
||||
// nö
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPostExecute(Void aVoid) {
|
||||
super.onPostExecute(aVoid);
|
||||
|
||||
if (mQueue.size() > 0) {
|
||||
Intent intent = mQueue.remove();
|
||||
LocalBroadcastManager.getInstance(mContext).sendBroadcast(intent);
|
||||
if (mQueue.size() > 0) {
|
||||
mTask = new DelayedTask();
|
||||
mTask.execute();
|
||||
}
|
||||
}
|
||||
|
||||
mIsRunning = false;
|
||||
}
|
||||
|
||||
public boolean isRunning() {
|
||||
return mIsRunning;
|
||||
}
|
||||
}
|
||||
}
|
||||
+3
-2
@@ -31,6 +31,7 @@ import com.google.android.gms.common.ConnectionResult;
|
||||
import com.google.android.gms.common.GooglePlayServicesUtil;
|
||||
import com.sap.sailing.android.shared.logging.ExLog;
|
||||
import com.sap.sailing.android.shared.util.AppUtils;
|
||||
import com.sap.sailing.android.shared.util.BroadcastManager;
|
||||
import com.sap.sailing.android.shared.util.ViewHelper;
|
||||
import com.sap.sailing.domain.base.CourseArea;
|
||||
import com.sap.sailing.domain.base.EventBase;
|
||||
@@ -108,7 +109,7 @@ public class LoginActivity extends BaseActivity
|
||||
//send intent to open the course area selection list
|
||||
Intent intent = new Intent(AppConstants.INTENT_ACTION_TOGGLE);
|
||||
intent.putExtra(AppConstants.INTENT_ACTION_EXTRA, AppConstants.INTENT_ACTION_TOGGLE_AREA);
|
||||
LocalBroadcastManager.getInstance(LoginActivity.this).sendBroadcast(intent);
|
||||
BroadcastManager.getInstance(LoginActivity.this).addIntent(intent);
|
||||
}
|
||||
};
|
||||
private ItemSelectedListener<CourseArea> courseAreaSelectionListener = new ItemSelectedListener<CourseArea>() {
|
||||
@@ -129,7 +130,7 @@ public class LoginActivity extends BaseActivity
|
||||
//send intent to open the position selection list
|
||||
Intent intent = new Intent(AppConstants.INTENT_ACTION_TOGGLE);
|
||||
intent.putExtra(AppConstants.INTENT_ACTION_EXTRA, AppConstants.INTENT_ACTION_TOGGLE_POSITION);
|
||||
LocalBroadcastManager.getInstance(LoginActivity.this).sendBroadcast(intent);
|
||||
BroadcastManager.getInstance(LoginActivity.this).addIntent(intent);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
+16
-6
@@ -1,9 +1,17 @@
|
||||
package com.sap.sailing.racecommittee.app.ui.activities;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
|
||||
import android.annotation.TargetApi;
|
||||
import android.app.Fragment;
|
||||
import android.app.FragmentTransaction;
|
||||
import android.content.*;
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.drawable.BitmapDrawable;
|
||||
@@ -15,10 +23,16 @@ import android.support.v4.widget.DrawerLayout;
|
||||
import android.support.v7.app.AlertDialog;
|
||||
import android.support.v7.internal.widget.TintImageView;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
import android.view.*;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.ViewTreeObserver;
|
||||
import android.view.Window;
|
||||
import android.widget.ProgressBar;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.sap.sailing.android.shared.logging.ExLog;
|
||||
import com.sap.sailing.android.shared.util.CollectionUtils;
|
||||
import com.sap.sailing.domain.base.CourseArea;
|
||||
@@ -51,10 +65,6 @@ import com.sap.sailing.racecommittee.app.utils.ThemeHelper;
|
||||
import com.sap.sse.common.TimePoint;
|
||||
import com.sap.sse.common.impl.MillisecondsTimePoint;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
|
||||
public class RacingActivity extends SessionActivity implements RaceInfoListener, RaceListCallbacks {
|
||||
private static final String TAG = RacingActivity.class.getName();
|
||||
private static final String WIND = "wind";
|
||||
|
||||
+2
-2
@@ -8,7 +8,6 @@ import android.content.Intent;
|
||||
import android.content.res.Resources;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.graphics.drawable.LayerDrawable;
|
||||
import android.support.v4.content.LocalBroadcastManager;
|
||||
import android.text.TextUtils;
|
||||
import android.util.TypedValue;
|
||||
import android.view.LayoutInflater;
|
||||
@@ -20,6 +19,7 @@ import android.widget.LinearLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.sap.sailing.android.shared.logging.ExLog;
|
||||
import com.sap.sailing.android.shared.util.BroadcastManager;
|
||||
import com.sap.sailing.android.shared.util.ViewHelper;
|
||||
import com.sap.sailing.domain.abstractlog.race.SimpleRaceLogIdentifier;
|
||||
import com.sap.sailing.domain.abstractlog.race.analyzing.impl.StartTimeFinder;
|
||||
@@ -146,7 +146,7 @@ public class ManagedRaceListAdapter extends ArrayAdapter<RaceListDataType> imple
|
||||
public void onClick(View v) {
|
||||
Intent intent = new Intent(AppConstants.INTENT_ACTION_SHOW_PROTEST);
|
||||
intent.putExtra(AppConstants.INTENT_ACTION_EXTRA, header.toString());
|
||||
LocalBroadcastManager.getInstance(getContext()).sendBroadcast(intent);
|
||||
BroadcastManager.getInstance(getContext()).addIntent(intent);
|
||||
}
|
||||
});
|
||||
} else if (type == ViewType.RACE.index) {
|
||||
|
||||
+2
-2
@@ -6,7 +6,6 @@ import java.lang.reflect.Method;
|
||||
import android.app.Fragment;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.content.LocalBroadcastManager;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
@@ -15,6 +14,7 @@ import android.widget.ImageView;
|
||||
import android.widget.PopupMenu;
|
||||
|
||||
import com.sap.sailing.android.shared.logging.ExLog;
|
||||
import com.sap.sailing.android.shared.util.BroadcastManager;
|
||||
import com.sap.sailing.android.shared.util.ViewHelper;
|
||||
import com.sap.sailing.racecommittee.app.AppConstants;
|
||||
import com.sap.sailing.racecommittee.app.R;
|
||||
@@ -128,7 +128,7 @@ public class LoginBackdrop extends Fragment {
|
||||
|
||||
private void refreshData() {
|
||||
Intent intent = new Intent(AppConstants.INTENT_ACTION_RESET);
|
||||
LocalBroadcastManager.getInstance(getActivity()).sendBroadcast(intent);
|
||||
BroadcastManager.getInstance(getActivity()).addIntent(intent);
|
||||
}
|
||||
|
||||
private void openInfo() {
|
||||
|
||||
+2
-2
@@ -3,9 +3,9 @@ package com.sap.sailing.racecommittee.app.ui.fragments;
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.content.LocalBroadcastManager;
|
||||
|
||||
import com.sap.sailing.android.shared.logging.ExLog;
|
||||
import com.sap.sailing.android.shared.util.BroadcastManager;
|
||||
import com.sap.sailing.domain.abstractlog.race.state.RaceState;
|
||||
import com.sap.sailing.domain.base.CourseBase;
|
||||
import com.sap.sailing.racecommittee.app.AppConstants;
|
||||
@@ -108,7 +108,7 @@ public abstract class RaceFragment extends LoggableFragment implements TickListe
|
||||
if (extra_key != null) {
|
||||
intent.putExtra(extra_key, extra_value);
|
||||
}
|
||||
LocalBroadcastManager.getInstance(getActivity()).sendBroadcast(intent);
|
||||
BroadcastManager.getInstance(getActivity()).addIntent(intent);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+2
-1
@@ -39,6 +39,7 @@ import android.widget.ListView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.sap.sailing.android.shared.logging.ExLog;
|
||||
import com.sap.sailing.android.shared.util.BroadcastManager;
|
||||
import com.sap.sailing.domain.abstractlog.race.state.ReadonlyRaceState;
|
||||
import com.sap.sailing.domain.abstractlog.race.state.impl.BaseRaceStateChangedListener;
|
||||
import com.sap.sailing.racecommittee.app.AppConstants;
|
||||
@@ -125,7 +126,7 @@ public class RaceListFragment extends LoggableFragment implements OnItemClickLis
|
||||
extra += RaceHelper.getSeriesName(race.getSeries());
|
||||
extra += RaceHelper.getFleetName(race.getFleet());
|
||||
intent.putExtra(AppConstants.INTENT_ACTION_EXTRA, extra);
|
||||
LocalBroadcastManager.getInstance(context).sendBroadcast(intent);
|
||||
BroadcastManager.getInstance(context).addIntent(intent);
|
||||
}
|
||||
|
||||
private void dataChanged(ReadonlyRaceState changedState) {
|
||||
|
||||
+4
-3
@@ -5,6 +5,7 @@ import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ListView;
|
||||
|
||||
import com.sap.sailing.android.shared.logging.ExLog;
|
||||
import com.sap.sailing.domain.abstractlog.race.state.RaceState;
|
||||
import com.sap.sailing.domain.common.racelog.Flags;
|
||||
@@ -77,15 +78,15 @@ public class AbortFlagsFragment extends RaceFragment implements AbortFlagItemCli
|
||||
private void logFlag(Flags flag) {
|
||||
switch (flag) {
|
||||
case ALPHA:
|
||||
ExLog.i(getActivity(), LogEvent.RACE_CHOOSE_ABORT_ALPHA, getRace().getId().toString());
|
||||
ExLog.i(getActivity(), LogEvent.RACE_CHOOSE_ABORT_ALPHA, getRace().getId());
|
||||
break;
|
||||
|
||||
case HOTEL:
|
||||
ExLog.i(getActivity(), LogEvent.RACE_CHOOSE_ABORT_HOTEL, getRace().getId().toString());
|
||||
ExLog.i(getActivity(), LogEvent.RACE_CHOOSE_ABORT_HOTEL, getRace().getId());
|
||||
break;
|
||||
|
||||
default:
|
||||
ExLog.i(getActivity(), LogEvent.RACE_CHOOSE_ABORT_NONE, getRace().getId().toString());
|
||||
ExLog.i(getActivity(), LogEvent.RACE_CHOOSE_ABORT_NONE, getRace().getId());
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
+5
-4
@@ -1,12 +1,16 @@
|
||||
package com.sap.sailing.racecommittee.app.ui.fragments.raceinfo;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.FragmentTransaction;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.IdRes;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.sap.sailing.android.shared.logging.ExLog;
|
||||
import com.sap.sailing.android.shared.util.BroadcastManager;
|
||||
import com.sap.sailing.domain.abstractlog.race.state.ReadonlyRaceState;
|
||||
import com.sap.sailing.domain.abstractlog.race.state.impl.BaseRaceStateChangedListener;
|
||||
import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.FlagPoleState;
|
||||
@@ -29,8 +33,6 @@ import com.sap.sailing.racecommittee.app.utils.TimeUtils;
|
||||
import com.sap.sse.common.TimePoint;
|
||||
import com.sap.sse.common.impl.MillisecondsTimePoint;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public abstract class BaseRaceInfoRaceFragment<ProcedureType extends RacingProcedure> extends RaceFragment {
|
||||
|
||||
private final RaceStateChangedListener mRaceStateChangedListener;
|
||||
@@ -161,8 +163,7 @@ public abstract class BaseRaceInfoRaceFragment<ProcedureType extends RacingProce
|
||||
|
||||
private void showMainContent() {
|
||||
Intent intent = new Intent(AppConstants.INTENT_ACTION_SHOW_MAIN_CONTENT);
|
||||
RacingActivity activity = (RacingActivity) getActivity();
|
||||
activity.processIntent(intent);
|
||||
BroadcastManager.getInstance(getActivity()).addIntent(intent);
|
||||
}
|
||||
|
||||
private class FlagPoleCache {
|
||||
|
||||
+5
-4
@@ -1,8 +1,9 @@
|
||||
package com.sap.sailing.racecommittee.app.ui.fragments.raceinfo;
|
||||
|
||||
import java.util.Calendar;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.content.LocalBroadcastManager;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
@@ -10,6 +11,8 @@ import android.widget.NumberPicker;
|
||||
import android.widget.TextView;
|
||||
import android.widget.TimePicker;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.sap.sailing.android.shared.util.BroadcastManager;
|
||||
import com.sap.sailing.racecommittee.app.AppConstants;
|
||||
import com.sap.sailing.racecommittee.app.R;
|
||||
import com.sap.sailing.racecommittee.app.domain.impl.Result;
|
||||
@@ -18,8 +21,6 @@ import com.sap.sailing.racecommittee.app.utils.TimeUtils;
|
||||
import com.sap.sse.common.TimePoint;
|
||||
import com.sap.sse.common.impl.MillisecondsTimePoint;
|
||||
|
||||
import java.util.Calendar;
|
||||
|
||||
public class RaceTimeChangeFragment extends BaseFragment implements View.OnClickListener {
|
||||
|
||||
public final static int START_TIME_MODE = 0;
|
||||
@@ -217,6 +218,6 @@ public class RaceTimeChangeFragment extends BaseFragment implements View.OnClick
|
||||
|
||||
private void closeFragment() {
|
||||
Intent intent = new Intent(AppConstants.INTENT_ACTION_SHOW_SUMMARY_CONTENT);
|
||||
LocalBroadcastManager.getInstance(getActivity()).sendBroadcast(intent);
|
||||
BroadcastManager.getInstance(getActivity()).addIntent(intent);
|
||||
}
|
||||
}
|
||||
|
||||
+3
-2
@@ -12,7 +12,6 @@ import java.util.Map;
|
||||
import android.content.Intent;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.content.LocalBroadcastManager;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
@@ -23,6 +22,7 @@ import android.widget.Spinner;
|
||||
import android.widget.TextView;
|
||||
import android.widget.TimePicker;
|
||||
|
||||
import com.sap.sailing.android.shared.util.BroadcastManager;
|
||||
import com.sap.sailing.android.shared.util.ViewHelper;
|
||||
import com.sap.sailing.domain.abstractlog.race.SimpleRaceLogIdentifier;
|
||||
import com.sap.sailing.domain.abstractlog.race.analyzing.impl.StartTimeFinderResult;
|
||||
@@ -739,6 +739,7 @@ public class StartTimeFragment extends BaseFragment
|
||||
}
|
||||
fragment.setArguments(args);
|
||||
getFragmentManager().beginTransaction().replace(viewId, fragment).commit();
|
||||
LocalBroadcastManager.getInstance(getActivity()).sendBroadcast(new Intent(AppConstants.INTENT_ACTION_CLEAR_TOGGLE));
|
||||
Intent intent = new Intent(AppConstants.INTENT_ACTION_CLEAR_TOGGLE);
|
||||
BroadcastManager.getInstance(getActivity()).addIntent(intent);
|
||||
}
|
||||
}
|
||||
|
||||
+2
-3
@@ -11,10 +11,10 @@ import org.json.JSONObject;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.support.v4.content.LocalBroadcastManager;
|
||||
import android.util.Log;
|
||||
|
||||
import com.sap.sailing.android.shared.data.http.HttpGetRequest;
|
||||
import com.sap.sailing.android.shared.util.BroadcastManager;
|
||||
import com.sap.sailing.android.shared.util.NetworkHelper;
|
||||
import com.sap.sailing.racecommittee.app.AppConstants;
|
||||
import com.sap.sailing.racecommittee.app.AppPreferences;
|
||||
@@ -41,11 +41,10 @@ public class WindHelper {
|
||||
NetworkHelper.getInstance(context).executeHttpJsonRequestAsnchronously(request, new NetworkHelper.NetworkHelperSuccessListener() {
|
||||
@Override
|
||||
public void performAction(JSONObject response) {
|
||||
LocalBroadcastManager manager = LocalBroadcastManager.getInstance(context);
|
||||
Intent notifyTrackedIntent = new Intent();
|
||||
notifyTrackedIntent.putExtra(AppConstants.INTENT_ACTION_IS_TRACKING_EXTRA, checkResponseForTracking(response, race));
|
||||
notifyTrackedIntent.setAction(AppConstants.INTENT_ACTION_IS_TRACKING);
|
||||
manager.sendBroadcast(notifyTrackedIntent);
|
||||
BroadcastManager.getInstance(context).addIntent(notifyTrackedIntent);
|
||||
}
|
||||
}, new NetworkHelper.NetworkHelperFailureListener() {
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user