Skip to content

Commit 902d400

Browse files
tumuyanBambooin
authored andcommitted
perf: reduce keyboard and one_hand_mode loading time
1 parent 8ea42b8 commit 902d400

File tree

6 files changed

+31
-6
lines changed

6 files changed

+31
-6
lines changed

app/src/main/java/com/osfans/trime/ime/core/Trime.java

+12-3
Original file line numberDiff line numberDiff line change
@@ -410,8 +410,11 @@ public void onOptionChanged(@NonNull String option, boolean value) {
410410
else if (c == '2' && value) oneHandMode = 2;
411411
else if (c == '3') oneHandMode = value ? 1 : 2;
412412
else oneHandMode = 0;
413+
413414
loadBackground();
414-
initKeyboard();
415+
if (keyboardSwitcher != null) keyboardSwitcher.newOrReset();
416+
resetKeyboard();
417+
bindKeyboardToInputView();
415418
}
416419
}
417420
if (mainKeyboardView != null) mainKeyboardView.invalidateAllKeys();
@@ -512,7 +515,9 @@ private void loadBackground() {
512515

513516
int[] padding =
514517
mConfig.getKeyboardPadding(oneHandMode, orientation == Configuration.ORIENTATION_LANDSCAPE);
515-
Timber.i("padding= %s %s %s", padding[0], padding[1], padding[2]);
518+
Timber.i(
519+
"update KeyboardPadding: Trime.loadBackground, padding= %s %s %s",
520+
padding[0], padding[1], padding[2]);
516521
mainKeyboardView.setPadding(padding[0], 0, padding[1], padding[2]);
517522

518523
final Drawable d3 = mConfig.getDrawable_("root_background");
@@ -549,6 +554,10 @@ public void resetCandidate() {
549554
/** 重置鍵盤、候選條、狀態欄等 !!注意,如果其中調用Rime.setOption,切換方案會卡住 */
550555
private void reset() {
551556
if (inputRootBinding == null) return;
557+
final LinearLayout symbolInputView = inputRootBinding.symbol.symbolInput;
558+
final LinearLayout mainInputView = inputRootBinding.main.mainInput;
559+
if (symbolInputView != null) symbolInputView.setVisibility(View.GONE);
560+
if (mainInputView != null) mainInputView.setVisibility(View.VISIBLE);
552561
getImeConfig().reset();
553562
loadConfig();
554563
getImeConfig().initCurrentColors();
@@ -563,7 +572,7 @@ public void initKeyboard() {
563572
setNavBarColor();
564573
mNeedUpdateRimeOption = true; // 不能在Rime.onMessage中調用set_option,會卡死
565574
bindKeyboardToInputView();
566-
loadBackground();
575+
// loadBackground(); // reset()调用过resetCandidate(),resetCandidate()一键调用过loadBackground();
567576
updateComposing(); // 切換主題時刷新候選
568577
}
569578

app/src/main/java/com/osfans/trime/ime/keyboard/Keyboard.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ public Keyboard(@NonNull Context context) {
101101

102102
final DisplayMetrics dm = context.getResources().getDisplayMetrics();
103103
mDisplayWidth = dm.widthPixels;
104-
int[] keyboardPadding = config.getKeyboardPadding(land);
104+
int[] keyboardPadding = config.getKeyboardPadding();
105105
mDisplayWidth = mDisplayWidth - keyboardPadding[0] - keyboardPadding[1];
106106
/* Height of the screen */
107107
// final int mDisplayHeight = dm.heightPixels;

app/src/main/java/com/osfans/trime/ime/keyboard/KeyboardSwitcher.kt

+10
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package com.osfans.trime.ime.keyboard
22

3+
import android.content.res.Configuration
34
import com.osfans.trime.ime.core.Trime
45
import com.osfans.trime.setup.Config
6+
import timber.log.Timber
57

68
/** Manages [Keyboard]s and their status. **/
79
class KeyboardSwitcher {
@@ -26,6 +28,14 @@ class KeyboardSwitcher {
2628
fun newOrReset() {
2729
val ims = Trime.getService()
2830
keyboardNames = Config.get(ims).keyboardNames
31+
32+
val land = (
33+
ims.resources.configuration.orientation
34+
== Configuration.ORIENTATION_LANDSCAPE
35+
)
36+
Config.get(ims).getKeyboardPadding(land)
37+
Timber.d("update KeyboardPadding: KeyboardSwitcher.init")
38+
2939
keyboards = Array(keyboardNames.size) { i ->
3040
Keyboard(ims, keyboardNames[i])
3141
}

app/src/main/java/com/osfans/trime/settings/components/ColorPickerDialog.kt

+4
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import com.osfans.trime.R
66
import com.osfans.trime.ime.core.Preferences
77
import com.osfans.trime.ime.core.Trime
88
import com.osfans.trime.setup.Config
9+
import timber.log.Timber
910

1011
/** 顯示配色方案列表
1112
* Show Color Scheme List
@@ -40,10 +41,13 @@ class ColorPickerDialog(
4041
}
4142

4243
private fun selectColor() {
44+
Timber.i("select")
4345
if (checkedColor < 0 || checkedColor >= colorKeys.size) return
4446
val colorKey = colorKeys[checkedColor]
4547
prefs.looks.selectedColor = colorKey
48+
Timber.i("initKeyboard")
4649
Trime.getService()?.initKeyboard() // 立刻重初始化键盘生效
50+
Timber.i("done")
4751
}
4852

4953
/** 调用该方法显示对话框 **/

app/src/main/java/com/osfans/trime/settings/components/ThemePickerDialog.kt

-2
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ import com.osfans.trime.setup.Config
1212
import kotlinx.coroutines.CoroutineScope
1313
import kotlinx.coroutines.Dispatchers
1414
import kotlinx.coroutines.Job
15-
import kotlinx.coroutines.delay
1615
import kotlinx.coroutines.launch
1716
import kotlinx.coroutines.withContext
1817
import kotlin.coroutines.CoroutineContext
@@ -112,7 +111,6 @@ class ThemePickerDialog(
112111

113112
private suspend fun doInBackground(): String = withContext(Dispatchers.IO) {
114113
setTheme()
115-
delay(1000) // Simulate async task
116114
return@withContext "OK"
117115
}
118116

app/src/main/java/com/osfans/trime/setup/Config.java

+4
Original file line numberDiff line numberDiff line change
@@ -256,6 +256,7 @@ public void setTheme(String theme) {
256256
}
257257

258258
private void init() {
259+
Timber.d("init() themeName=%s schema_id=%s", themeName, schema_id);
259260
try {
260261
Rime.deploy_config_file(themeName + ".yaml", "config_version");
261262
Map<String, ?> m = YamlUtils.INSTANCE.loadMap(themeName, "");
@@ -279,6 +280,8 @@ private void init() {
279280
Rime.setShowSwitches(getPrefs().getKeyboard().getSwitchesEnabled());
280281
Rime.setShowSwitchArrow(getPrefs().getKeyboard().getSwitchArrowEnabled());
281282
reset();
283+
initCurrentColors();
284+
Timber.d("init() finins");
282285
} catch (Exception e) {
283286
e.printStackTrace();
284287
setTheme(defaultName);
@@ -432,6 +435,7 @@ public int[] getKeyboardPadding() {
432435
}
433436

434437
public int[] getKeyboardPadding(boolean land_mode) {
438+
Timber.i("update KeyboardPadding: getKeyboardPadding(boolean land_mode) ");
435439
return getKeyboardPadding(one_hand_mode, land_mode);
436440
}
437441

0 commit comments

Comments
 (0)