Skip to content

Commit 1f1d3bb

Browse files
committed
fix(language): 修复语言切换偶现异常问题
1 parent 150df5e commit 1f1d3bb

5 files changed

Lines changed: 281 additions & 106 deletions

File tree

app/src/main/java/com/sevtinge/hyperceiler/home/tips/HomePageTipHelper.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,16 @@
77
import android.widget.TextView;
88

99
import com.sevtinge.hyperceiler.R;
10+
import com.sevtinge.hyperceiler.common.utils.AppLanguageHelper;
1011

1112
import java.lang.ref.WeakReference;
1213

1314
public class HomePageTipHelper {
1415

1516
private static final Object TIP_REQUEST_LOCK = new Object();
1617
private static String mCurrentTip = "";
18+
/** 产生 mCurrentTip 时使用的应用语言,用于在切语言后令缓存失效。 */
19+
private static String mCurrentTipLang = "";
1720
private static boolean sIsLoadingTip;
1821
private static WeakReference<TextView> sCurrentTipViewRef = new WeakReference<>(null);
1922

@@ -23,9 +26,12 @@ public static View getTipView(Context context) {
2326

2427
if (tipView != null) {
2528
sCurrentTipViewRef = new WeakReference<>(tipView);
26-
if (!TextUtils.isEmpty(mCurrentTip)) {
29+
String currentLang = AppLanguageHelper.getLanguage(context);
30+
boolean langChanged = !TextUtils.equals(currentLang, mCurrentTipLang);
31+
if (!TextUtils.isEmpty(mCurrentTip) && !langChanged) {
2732
tipView.setText("Tip: " + mCurrentTip);
2833
} else {
34+
// 语言变了或者还没拉过,重新拉一条。
2935
tipView.setText("Tip: Loading...");
3036
updateTipTextWithView(context, tipView);
3137
}
@@ -56,11 +62,13 @@ public static void updateTipTextWithView(Context context, final TextView targetV
5662
sIsLoadingTip = true;
5763
}
5864

65+
final String requestLang = AppLanguageHelper.getLanguage(context);
5966
HomePageTipManager.getRandomTipAsync(context.getApplicationContext(), tip -> {
6067
synchronized (TIP_REQUEST_LOCK) {
6168
sIsLoadingTip = false;
6269
}
6370
mCurrentTip = tip;
71+
mCurrentTipLang = requestLang;
6472
String tipText = "Tip: " + mCurrentTip;
6573
targetView.setText(tipText);
6674

app/src/main/java/com/sevtinge/hyperceiler/home/tips/HomePageTipManager.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import android.os.Handler;
66
import android.os.Looper;
77

8-
import com.sevtinge.hyperceiler.libhook.utils.api.DeviceHelper;
8+
import com.sevtinge.hyperceiler.common.utils.AppLanguageHelper;
99

1010
import java.io.BufferedReader;
1111
import java.io.IOException;
@@ -30,7 +30,7 @@ public interface TipCallback {
3030
}
3131

3232
public static void getRandomTipAsync(Context context, TipCallback callback) {
33-
String lang = DeviceHelper.Hardware.getLanguage();
33+
String lang = AppLanguageHelper.getLanguage(context);
3434
EXECUTOR.execute(() -> {
3535
List<String> tips = getTipsFromAssets(context, lang);
3636
String selected = tips.isEmpty() ? "Enjoy using HyperCeiler!" : tips.get(RANDOM.nextInt(tips.size()));

app/src/main/java/com/sevtinge/hyperceiler/settings/SettingsFragment.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,6 @@
4747
import com.sevtinge.hyperceiler.libhook.utils.api.BackupUtils;
4848
import com.sevtinge.hyperceiler.search.SearchHelper;
4949
import com.sevtinge.hyperceiler.sub.ScopePickerActivity;
50-
import com.sevtinge.hyperceiler.ui.HomePageActivity;
5150
import com.sevtinge.hyperceiler.ui.LauncherActivity;
5251
import com.sevtinge.hyperceiler.ui.SplashActivity;
5352
import com.sevtinge.hyperceiler.utils.DialogHelper;
@@ -170,11 +169,8 @@ public void initPrefs() {
170169

171170
mLanguage.setOnPreferenceChangeListener((preference, o) -> {
172171
int index = Integer.parseInt((String) o);
173-
LanguageHelper.setIndexLanguage(getActivity(), index, false);
172+
LanguageHelper.setIndexLanguage(getActivity(), index, true);
174173
SearchHelper.initIndex(requireContext(), true);
175-
if (getActivity() instanceof HomePageActivity activity) {
176-
activity.reloadPagesForLanguageChange();
177-
}
178174
return true;
179175
});
180176

0 commit comments

Comments
 (0)