pull/605/head
jhengazuji 4 months ago
parent c542105115
commit 524220ec62
  1. 5
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java
  2. 13
      app/src/main/java/com/fongmi/android/tv/api/config/LiveConfig.java
  3. 25
      app/src/main/java/com/fongmi/android/tv/api/config/VodConfig.java
  4. 7
      app/src/main/java/com/fongmi/android/tv/api/config/WallConfig.java
  5. 11
      app/src/main/java/com/fongmi/android/tv/service/PlaybackService.java
  6. 5
      app/src/mobile/java/com/fongmi/android/tv/ui/activity/HomeActivity.java

@ -44,6 +44,7 @@ import com.fongmi.android.tv.model.SiteViewModel;
import com.fongmi.android.tv.player.Source;
import com.fongmi.android.tv.player.exo.CacheManager;
import com.fongmi.android.tv.server.Server;
import com.fongmi.android.tv.service.PlaybackService;
import com.fongmi.android.tv.ui.adapter.BaseDiffCallback;
import com.fongmi.android.tv.ui.base.BaseActivity;
import com.fongmi.android.tv.ui.custom.CustomRowPresenter;
@ -476,14 +477,14 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen
} else if (mBinding.recycler.getSelectedPosition() != 0) {
mBinding.recycler.scrollToPosition(0);
} else {
super.onBackInvoked();
if (PlaybackService.isRunning()) moveTaskToBack(true);
else super.onBackInvoked();
}
}
@Override
protected void onDestroy() {
CacheManager.get().release();
WallConfig.get().clear();
LiveConfig.get().clear();
VodConfig.get().clear();
AppDatabase.backup();

@ -91,10 +91,6 @@ public class LiveConfig {
}
public LiveConfig init() {
this.home = null;
this.ads = new ArrayList<>();
this.rules = new ArrayList<>();
this.lives = new ArrayList<>();
return config(Config.live());
}
@ -106,10 +102,8 @@ public class LiveConfig {
}
public LiveConfig clear() {
this.home = null;
this.ads.clear();
this.rules.clear();
this.lives.clear();
home = null;
lives = null;
return this;
}
@ -133,7 +127,7 @@ public class LiveConfig {
OkHttp.cancel(TAG);
Server.get().start();
String text = Decoder.getJson(UrlUtil.convert(config.getUrl()), TAG);
if (!Json.isObj(text)) clear().parseText(text, callback);
if (!Json.isObj(text)) parseText(text, callback);
else checkJson(Json.parse(text).getAsJsonObject(), callback);
config.update();
} catch (Throwable e) {
@ -180,7 +174,6 @@ public class LiveConfig {
private void parseConfig(JsonObject object, Callback callback) {
try {
clear();
initLive(object);
initOther(object);
} catch (Throwable e) {

@ -80,17 +80,7 @@ public class VodConfig {
}
public VodConfig init() {
this.wall = null;
this.home = null;
this.parse = null;
this.config = Config.vod();
this.ads = new ArrayList<>();
this.doh = new ArrayList<>();
this.rules = new ArrayList<>();
this.sites = new ArrayList<>();
this.flags = new ArrayList<>();
this.parses = new ArrayList<>();
return this;
return config(Config.vod());
}
public VodConfig config(Config config) {
@ -99,15 +89,9 @@ public class VodConfig {
}
public VodConfig clear() {
this.wall = null;
this.home = null;
this.parse = null;
this.ads.clear();
this.doh.clear();
this.rules.clear();
this.sites.clear();
this.flags.clear();
this.parses.clear();
home = null;
parse = null;
sites = null;
BaseLoader.get().clear();
return this;
}
@ -158,7 +142,6 @@ public class VodConfig {
private void parseConfig(JsonObject object, Callback callback) {
try {
clear();
initSite(object);
initParse(object);
initOther(object);

@ -49,7 +49,7 @@ public class WallConfig {
}
public static void load(Config config, Callback callback) {
get().clear().config(config).load(callback);
get().config(config).load(callback);
}
public WallConfig init() {
@ -63,11 +63,6 @@ public class WallConfig {
return this;
}
public WallConfig clear() {
this.config = null;
return this;
}
private boolean isCanceled(Throwable e) {
return e.getCause() instanceof InterruptedException || e.getCause() instanceof InterruptedIOException;
}

@ -1,8 +1,10 @@
package com.fongmi.android.tv.service;
import android.annotation.SuppressLint;
import android.app.ActivityManager;
import android.app.Notification;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ServiceInfo;
import android.graphics.Bitmap;
@ -32,6 +34,7 @@ import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import java.util.List;
import java.util.Objects;
public class PlaybackService extends Service {
@ -151,4 +154,12 @@ public class PlaybackService extends Service {
public IBinder onBind(Intent intent) {
return null;
}
public static boolean isRunning() {
ActivityManager manager = (ActivityManager) App.get().getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningServiceInfo> services = manager.getRunningServices(Integer.MAX_VALUE);
if (services == null || services.isEmpty()) return false;
String clz = PlaybackService.class.getName();
return services.stream().anyMatch(serviceInfo -> clz.equals(serviceInfo.service.getClassName()));
}
}

@ -32,6 +32,7 @@ import com.fongmi.android.tv.player.Source;
import com.fongmi.android.tv.player.exo.CacheManager;
import com.fongmi.android.tv.receiver.ShortcutReceiver;
import com.fongmi.android.tv.server.Server;
import com.fongmi.android.tv.service.PlaybackService;
import com.fongmi.android.tv.ui.base.BaseActivity;
import com.fongmi.android.tv.ui.custom.FragmentStateManager;
import com.fongmi.android.tv.ui.fragment.SettingFragment;
@ -216,14 +217,14 @@ public class HomeActivity extends BaseActivity implements NavigationBarView.OnIt
} else if (mManager.isVisible(1)) {
mBinding.navigation.setSelectedItemId(R.id.vod);
} else if (mManager.canBack(0)) {
super.onBackInvoked();
if (PlaybackService.isRunning()) moveTaskToBack(true);
else super.onBackInvoked();
}
}
@Override
protected void onDestroy() {
CacheManager.get().release();
WallConfig.get().clear();
LiveConfig.get().clear();
VodConfig.get().clear();
AppDatabase.backup();

Loading…
Cancel
Save