Bugfix: prevent NPE as handler should not be executed anymore.

Fixes #1035.
This commit is contained in:
Dennis Guse
2021-11-24 19:11:36 +01:00
parent 1e27542aea
commit b6d935cf34
2 changed files with 25 additions and 11 deletions
@@ -17,6 +17,7 @@
package de.dennisguse.opentracks; package de.dennisguse.opentracks;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.content.Context;
import android.graphics.drawable.TransitionDrawable; import android.graphics.drawable.TransitionDrawable;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler; import android.os.Handler;
@@ -97,7 +98,10 @@ public class ControllerFragment extends Fragment implements View.OnTouchListener
return; return;
} }
getCallback().recordStart(); Callback callback = (Callback) getContext();
if (callback != null) {
callback.recordStart();
}
}); });
viewBinding.controllerStop.setOnTouchListener(this); viewBinding.controllerStop.setOnTouchListener(this);
@@ -114,6 +118,12 @@ public class ControllerFragment extends Fragment implements View.OnTouchListener
trackRecordingServiceConnection.startConnection(getContext()); trackRecordingServiceConnection.startConnection(getContext());
} }
@Override
public void onPause() {
super.onPause();
handlerUpdateTotalTime.removeCallbacksAndMessages(null);
}
@Override @Override
public void onStop() { public void onStop() {
super.onStop(); super.onStop();
@@ -175,7 +185,10 @@ public class ControllerFragment extends Fragment implements View.OnTouchListener
buttonDelay = () -> { buttonDelay = () -> {
view.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_CLICKED); view.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_CLICKED);
view.performClick(); view.performClick();
getCallback().recordPause(); Callback callback = (Callback) getContext();
if (callback != null) {
callback.recordPause();
}
transition.resetTransition(); transition.resetTransition();
@@ -198,8 +211,12 @@ public class ControllerFragment extends Fragment implements View.OnTouchListener
buttonDelay = () -> { buttonDelay = () -> {
view.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_CLICKED); view.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_CLICKED);
getCallback().recordStop(); Context context = getContext();
ActivityUtils.vibrate(getContext(), 1000); Callback callback = (Callback) context;
if (callback != null) {
callback.recordStop();
ActivityUtils.vibrate(context, 1000);
}
transition.resetTransition(); transition.resetTransition();
}; };
@@ -222,10 +239,6 @@ public class ControllerFragment extends Fragment implements View.OnTouchListener
viewBinding.controllerStatus.setText(recordingStatus.isPaused() ? R.string.generic_paused : R.string.generic_recording); viewBinding.controllerStatus.setText(recordingStatus.isPaused() ? R.string.generic_paused : R.string.generic_recording);
} }
private Callback getCallback() {
return (Callback) getActivity();
}
public interface Callback { public interface Callback {
void recordStart(); void recordStart();
@@ -1,5 +1,7 @@
package de.dennisguse.opentracks.util; package de.dennisguse.opentracks.util;
import static android.content.Context.VIBRATOR_SERVICE;
import android.app.Activity; import android.app.Activity;
import android.app.SearchManager; import android.app.SearchManager;
import android.content.Context; import android.content.Context;
@@ -14,6 +16,7 @@ import android.view.MenuItem;
import android.widget.AbsListView; import android.widget.AbsListView;
import android.widget.ListView; import android.widget.ListView;
import androidx.annotation.NonNull;
import androidx.appcompat.widget.SearchView; import androidx.appcompat.widget.SearchView;
import java.util.ArrayList; import java.util.ArrayList;
@@ -21,8 +24,6 @@ import java.util.ArrayList;
import de.dennisguse.opentracks.ContextualActionModeCallback; import de.dennisguse.opentracks.ContextualActionModeCallback;
import de.dennisguse.opentracks.R; import de.dennisguse.opentracks.R;
import static android.content.Context.VIBRATOR_SERVICE;
public class ActivityUtils { public class ActivityUtils {
private static final String TAG = ActivityUtils.class.getSimpleName(); private static final String TAG = ActivityUtils.class.getSimpleName();
@@ -97,7 +98,7 @@ public class ActivityUtils {
return searchView; return searchView;
} }
public static void vibrate(Context context, int milliseconds) { public static void vibrate(@NonNull Context context, int milliseconds) {
final Vibrator vibrator = (Vibrator) context.getSystemService(VIBRATOR_SERVICE); final Vibrator vibrator = (Vibrator) context.getSystemService(VIBRATOR_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
vibrator.vibrate(VibrationEffect.createOneShot(milliseconds, VibrationEffect.DEFAULT_AMPLITUDE)); vibrator.vibrate(VibrationEffect.createOneShot(milliseconds, VibrationEffect.DEFAULT_AMPLITUDE));