config cache

pull/356/head
okjack 2 years ago
parent 8cf0bc9102
commit 4eedeb3ea6
  1. 2
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java
  2. 16
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingActivity.java
  3. 58
      app/src/leanback/res/layout/activity_setting.xml
  4. 8
      app/src/main/java/com/fongmi/android/tv/Setting.java
  5. 12
      app/src/main/java/com/fongmi/android/tv/api/config/VodConfig.java
  6. 5
      app/src/main/java/com/fongmi/android/tv/bean/Config.java
  7. 10
      app/src/main/res/values-zh-rCN/strings.xml
  8. 10
      app/src/main/res/values-zh-rTW/strings.xml
  9. 10
      app/src/main/res/values/strings.xml
  10. 2
      app/src/mobile/java/com/fongmi/android/tv/ui/activity/MainActivity.java

@ -299,7 +299,7 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen
Notify.progress(this);
WallConfig.get().init();
LiveConfig.get().init().load();
VodConfig.get().init().load(getCallback());
VodConfig.get().init().load(getCallback(), true);
setLoading(true);
}

@ -8,6 +8,7 @@ import android.view.View;
import androidx.viewbinding.ViewBinding;
import com.fongmi.android.tv.BuildConfig;
import com.fongmi.android.tv.R;
import com.fongmi.android.tv.Setting;
import com.fongmi.android.tv.Updater;
import com.fongmi.android.tv.api.config.LiveConfig;
@ -35,6 +36,7 @@ import com.fongmi.android.tv.ui.dialog.ProxyDialog;
import com.fongmi.android.tv.ui.dialog.SiteDialog;
import com.fongmi.android.tv.utils.FileUtil;
import com.fongmi.android.tv.utils.Notify;
import com.fongmi.android.tv.utils.ResUtil;
import com.fongmi.android.tv.utils.UrlUtil;
import com.github.catvod.bean.Doh;
import com.github.catvod.net.OkHttp;
@ -47,6 +49,7 @@ public class SettingActivity extends BaseActivity implements ConfigCallback, Sit
private ActivitySettingBinding mBinding;
private int type;
private String[] configCache;
public static void start(Activity activity) {
activity.startActivity(new Intent(activity, SettingActivity.class));
@ -77,6 +80,7 @@ public class SettingActivity extends BaseActivity implements ConfigCallback, Sit
mBinding.dohText.setText(getDohList()[getDohIndex()]);
mBinding.versionText.setText(BuildConfig.VERSION_NAME);
mBinding.proxyText.setText(UrlUtil.scheme(Setting.getProxy()));
mBinding.configCacheText.setText((configCache = ResUtil.getStringArray(R.array.select_config_cache))[Setting.getConfigCache()]);
setCacheText();
}
@ -113,6 +117,8 @@ public class SettingActivity extends BaseActivity implements ConfigCallback, Sit
mBinding.wallRefresh.setOnClickListener(this::setWallRefresh);
mBinding.custom.setOnClickListener(this::onCustom);
mBinding.doh.setOnClickListener(this::setDoh);
mBinding.configCache.setOnClickListener(this::setConfigCache);
mBinding.reset.setOnClickListener(this::onReset);
}
@Override
@ -277,6 +283,16 @@ public class SettingActivity extends BaseActivity implements ConfigCallback, Sit
SettingCustomActivity.start(this);
}
private void setConfigCache(View view) {
int index = Setting.getConfigCache();
Setting.putConfigCache(index = index == configCache.length - 1 ? 0 : ++index);
mBinding.configCacheText.setText(configCache[index]);
}
private void onReset(View view) {
}
private void setDoh(View view) {
DohDialog.create(this).index(getDohIndex()).show();
}

@ -319,6 +319,64 @@
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:orientation="horizontal">
<LinearLayout
android:id="@+id/configCache"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:layout_weight="1"
android:background="@drawable/selector_item"
android:focusable="true"
android:focusableInTouchMode="true"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:text="@string/setting_config_cache"
android:textColor="@color/white"
android:textSize="18sp" />
<TextView
android:id="@+id/configCacheText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="end"
android:textColor="@color/white"
android:textSize="18sp"
tools:text="关闭" />
</LinearLayout>
<LinearLayout
android:id="@+id/reset"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/selector_item"
android:focusable="true"
android:focusableInTouchMode="true"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:text="@string/setting_reset"
android:textColor="@color/white"
android:textSize="18sp" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"

@ -469,4 +469,12 @@ public class Setting {
Prefers.put("home_history", show);
}
public static void putConfigCache(int key) {
Prefers.put("config_cache", key);
}
public static int getConfigCache() {
return Prefers.getInt("config_cache", 0);
}
}

@ -124,7 +124,12 @@ public class VodConfig {
}
public void load(Callback callback) {
App.execute(() -> loadConfig(callback));
load(callback, false);
}
public void load(Callback callback, boolean cache) {
if (cache) App.execute(() -> loadConfigCache(callback));
else App.execute(() -> loadConfig(callback));
}
private void loadConfig(Callback callback) {
@ -142,6 +147,11 @@ public class VodConfig {
else App.post(() -> callback.error(Notify.getError(R.string.error_config_get, e)));
}
private void loadConfigCache(Callback callback) {
if (!TextUtils.isEmpty(config.getJson()) && config.isCache()) checkJson(Json.parse(config.getJson()).getAsJsonObject(), callback);
else loadConfig(callback);
}
private void checkJson(JsonObject object, Callback callback) {
if (object.has("urls")) {
parseDepot(object, callback);

@ -7,6 +7,7 @@ import androidx.room.Index;
import androidx.room.PrimaryKey;
import com.fongmi.android.tv.App;
import com.fongmi.android.tv.Setting;
import com.fongmi.android.tv.db.AppDatabase;
import com.github.catvod.utils.Prefers;
import com.google.gson.annotations.SerializedName;
@ -119,6 +120,10 @@ public class Config {
this.time = time;
}
public boolean isCache() {
return getTime() + (long)(3600*1000 * Setting.getConfigCache()) > System.currentTimeMillis();
}
public Config type(int type) {
setType(type);
return this;

@ -75,6 +75,8 @@
<string name="setting_player">播放设置</string>
<string name="setting_danmu">弹幕设置</string>
<string name="setting_custom">个性设置</string>
<string name="setting_config_cache">接口缓存</string>
<string name="setting_reset">重置App</string>
<string name="setting_quality">图片品质</string>
<string name="setting_size">图片尺寸</string>
<string name="setting_aggregated_search">聚合搜索</string>
@ -257,6 +259,14 @@
<item>TVBox风格</item>
</string-array>
<string-array name="select_config_cache">
<item>关闭</item>
<item>1小时</item>
<item>2小时</item>
<item>3小时</item>
<item>4小时</item>
</string-array>
<string-array name="select_caption">
<item>预设</item>
<item>系统</item>

@ -75,6 +75,8 @@
<string name="setting_player">播放設定</string>
<string name="setting_danmu">彈幕設定</string>
<string name="setting_custom">個性設定</string>
<string name="setting_config_cache">接口暫存</string>
<string name="setting_reset">重置App</string>
<string name="setting_quality">圖片品質</string>
<string name="setting_size">圖片尺寸</string>
<string name="setting_aggregated_search">聚合搜索</string>
@ -257,6 +259,14 @@
<item>TVBox風格</item>
</string-array>
<string-array name="select_config_cache">
<item>關閉</item>
<item>1小時</item>
<item>2小時</item>
<item>3小時</item>
<item>4小時</item>
</string-array>
<string-array name="select_caption">
<item>預設</item>
<item>系統</item>

@ -75,6 +75,8 @@
<string name="setting_player">Player setting</string>
<string name="setting_danmu">Danmu setting</string>
<string name="setting_custom">Custom setting</string>
<string name="setting_config_cache">Config cache</string>
<string name="setting_reset">Reset app</string>
<string name="setting_quality">Image quality</string>
<string name="setting_size">Image size</string>
<string name="setting_aggregated_search">Aggregated search</string>
@ -262,6 +264,14 @@
<item>TVBox style</item>
</string-array>
<string-array name="select_config_cache">
<item>Close</item>
<item>1 Hour</item>
<item>2 Hour</item>
<item>3 Hour</item>
<item>4 Hour</item>
</string-array>
<string-array name="select_caption">
<item>Default</item>
<item>System</item>

@ -106,7 +106,7 @@ public class MainActivity extends BaseActivity implements NavigationBarView.OnIt
public void initConfig() {
WallConfig.get().init();
LiveConfig.get().init().load();
VodConfig.get().init().load(getCallback());
VodConfig.get().init().load(getCallback(), true);
}
private Callback getCallback() {

Loading…
Cancel
Save