Fixing MainThreadInitializedObject
> Making SafeCloseable implementation mandatory, to prevent leaks during test and preview > Removing getNoCreate method and defining executeIfCreated to avoid null pointer exceptions > Fixing sandbox value leaking into main, by Checking sandbox against App context > Converting sanbox to an interface instead a class Bug: 335280439 Test: Presubmit Flag: None Change-Id: I951dcde871898e745ff6490a1c4f8fd1512888f5
This commit is contained in:
@@ -27,7 +27,7 @@ import java.util.concurrent.CopyOnWriteArrayList;
|
||||
/**
|
||||
* Utility class for tracking if the screen is currently on or off
|
||||
*/
|
||||
public class ScreenOnTracker {
|
||||
public class ScreenOnTracker implements SafeCloseable {
|
||||
|
||||
public static final MainThreadInitializedObject<ScreenOnTracker> INSTANCE =
|
||||
new MainThreadInitializedObject<>(ScreenOnTracker::new);
|
||||
@@ -35,14 +35,21 @@ public class ScreenOnTracker {
|
||||
private final SimpleBroadcastReceiver mReceiver = new SimpleBroadcastReceiver(this::onReceive);
|
||||
private final CopyOnWriteArrayList<ScreenOnListener> mListeners = new CopyOnWriteArrayList<>();
|
||||
|
||||
private final Context mContext;
|
||||
private boolean mIsScreenOn;
|
||||
|
||||
private ScreenOnTracker(Context context) {
|
||||
// Assume that the screen is on to begin with
|
||||
mContext = context;
|
||||
mIsScreenOn = true;
|
||||
mReceiver.register(context, ACTION_SCREEN_ON, ACTION_SCREEN_OFF, ACTION_USER_PRESENT);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void close() {
|
||||
mReceiver.unregisterReceiverSafely(mContext);
|
||||
}
|
||||
|
||||
private void onReceive(Intent intent) {
|
||||
String action = intent.getAction();
|
||||
if (ACTION_SCREEN_ON.equals(action)) {
|
||||
|
||||
Reference in New Issue
Block a user