diff --git a/library/ui/src/main/java/com/google/android/exoplayer2/ui/PlayerNotificationManager.java b/library/ui/src/main/java/com/google/android/exoplayer2/ui/PlayerNotificationManager.java index b52a3e6f82..7c899c1ea2 100644 --- a/library/ui/src/main/java/com/google/android/exoplayer2/ui/PlayerNotificationManager.java +++ b/library/ui/src/main/java/com/google/android/exoplayer2/ui/PlayerNotificationManager.java @@ -610,10 +610,12 @@ public class PlayerNotificationManager { controlDispatcher = new DefaultControlDispatcher(); window = new Timeline.Window(); instanceId = instanceIdCounter++; - //noinspection Convert2MethodRef - mainHandler = - Util.createHandler( - Looper.getMainLooper(), msg -> PlayerNotificationManager.this.handleMessage(msg)); + // This fails the nullness checker because handleMessage() is 'called' while `this` is still + // @UnderInitialization. No tasks are scheduled on mainHandler before the constructor completes, + // so this is safe and we can suppress the warning. + @SuppressWarnings("nullness:methodref.receiver.bound.invalid") + Handler mainHandler = Util.createHandler(Looper.getMainLooper(), this::handleMessage); + this.mainHandler = mainHandler; notificationManager = NotificationManagerCompat.from(context); playerListener = new PlayerListener(); notificationBroadcastReceiver = new NotificationBroadcastReceiver(); diff --git a/library/ui/src/main/java/com/google/android/exoplayer2/ui/StyledPlayerControlView.java b/library/ui/src/main/java/com/google/android/exoplayer2/ui/StyledPlayerControlView.java index ed2bad6eeb..f17404b7a2 100644 --- a/library/ui/src/main/java/com/google/android/exoplayer2/ui/StyledPlayerControlView.java +++ b/library/ui/src/main/java/com/google/android/exoplayer2/ui/StyledPlayerControlView.java @@ -1920,7 +1920,7 @@ public class StyledPlayerControlView extends FrameLayout { } } - private class SettingViewHolder extends RecyclerView.ViewHolder { + private final class SettingViewHolder extends RecyclerView.ViewHolder { private final TextView mainTextView; private final TextView subTextView; private final ImageView iconView; @@ -1930,8 +1930,7 @@ public class StyledPlayerControlView extends FrameLayout { mainTextView = itemView.findViewById(R.id.exo_main_text); subTextView = itemView.findViewById(R.id.exo_sub_text); iconView = itemView.findViewById(R.id.exo_icon); - itemView.setOnClickListener( - v -> onSettingViewClicked(SettingViewHolder.this.getAdapterPosition())); + itemView.setOnClickListener(v -> onSettingViewClicked(getAdapterPosition())); } } @@ -1969,7 +1968,7 @@ public class StyledPlayerControlView extends FrameLayout { } } - private class SubSettingViewHolder extends RecyclerView.ViewHolder { + private final class SubSettingViewHolder extends RecyclerView.ViewHolder { private final TextView textView; private final View checkView; @@ -1977,8 +1976,7 @@ public class StyledPlayerControlView extends FrameLayout { super(itemView); textView = itemView.findViewById(R.id.exo_text); checkView = itemView.findViewById(R.id.exo_check); - itemView.setOnClickListener( - v -> onSubSettingViewClicked(SubSettingViewHolder.this.getAdapterPosition())); + itemView.setOnClickListener(v -> onSubSettingViewClicked(getAdapterPosition())); } }