diff --git a/app/src/main/java/com/fongmi/android/tv/player/Players.java b/app/src/main/java/com/fongmi/android/tv/player/Players.java index 9abd1dc90..558e54d8c 100644 --- a/app/src/main/java/com/fongmi/android/tv/player/Players.java +++ b/app/src/main/java/com/fongmi/android/tv/player/Players.java @@ -486,16 +486,17 @@ public class Players implements Player.Listener, ParseCallback, DrawHandler.Call } private void setDanmaku(List items) { - if (items.isEmpty()) danmaku.release(); - else setDanmaku(items.get(0)); + setDanmaku(items.isEmpty() ? Danmaku.empty() : items.get(0)); } public void setDanmaku(Danmaku item) { - danmaku.release(); - if (danmakus == null) danmakus = new ArrayList<>(); - if (!item.isEmpty() && !danmakus.contains(item)) danmakus.add(0, item); - if (!item.isEmpty()) App.execute(() -> danmaku.prepare(new Parser().load(new Loader(item).getDataSource()), context)); - for (int i = 0; i < danmakus.size(); i++) danmakus.get(i).setSelected(danmakus.get(i).getUrl().equals(item.getUrl()) && !danmakus.get(i).isSelected()); + App.execute(() -> { + danmaku.release(); + if (danmakus == null) danmakus = new ArrayList<>(); + if (!item.isEmpty() && !danmakus.contains(item)) danmakus.add(0, item); + if (!item.isEmpty()) danmaku.prepare(new Parser().load(new Loader(item).getDataSource()), context); + for (int i = 0; i < danmakus.size(); i++) danmakus.get(i).setSelected(danmakus.get(i).getUrl().equals(item.getUrl()) && !danmakus.get(i).isSelected()); + }); } public void setDanmakuSize(float size) { diff --git a/app/src/main/java/com/fongmi/android/tv/ui/dialog/DanmakuDialog.java b/app/src/main/java/com/fongmi/android/tv/ui/dialog/DanmakuDialog.java index 63c18d6f3..71ff96637 100644 --- a/app/src/main/java/com/fongmi/android/tv/ui/dialog/DanmakuDialog.java +++ b/app/src/main/java/com/fongmi/android/tv/ui/dialog/DanmakuDialog.java @@ -13,7 +13,6 @@ import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentActivity; import androidx.viewbinding.ViewBinding; -import com.fongmi.android.tv.App; import com.fongmi.android.tv.bean.Danmaku; import com.fongmi.android.tv.databinding.DialogDanmakuBinding; import com.fongmi.android.tv.player.Players; @@ -81,7 +80,7 @@ public final class DanmakuDialog extends BaseDialog implements DanmakuAdapter.On public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode != Activity.RESULT_OK || requestCode != FileChooser.REQUEST_PICK_FILE) return; - App.post(() -> player.setDanmaku(Danmaku.from(FileChooser.getPathFromUri(data.getData()))), 250); + player.setDanmaku(Danmaku.from(FileChooser.getPathFromUri(data.getData()))); dismiss(); } } \ No newline at end of file diff --git a/app/src/main/java/com/fongmi/android/tv/ui/dialog/TrackDialog.java b/app/src/main/java/com/fongmi/android/tv/ui/dialog/TrackDialog.java index 402441ce1..42b3804c5 100644 --- a/app/src/main/java/com/fongmi/android/tv/ui/dialog/TrackDialog.java +++ b/app/src/main/java/com/fongmi/android/tv/ui/dialog/TrackDialog.java @@ -133,7 +133,7 @@ public final class TrackDialog extends BaseDialog implements TrackAdapter.OnClic public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode != Activity.RESULT_OK || requestCode != FileChooser.REQUEST_PICK_FILE) return; - App.post(() -> player.setSub(Sub.from(FileChooser.getPathFromUri(data.getData()))), 250); + player.setSub(Sub.from(FileChooser.getPathFromUri(data.getData()))); dismiss(); }