优化首页列表性能

This commit is contained in:
chenjuntao
2021-09-28 16:04:18 +08:00
parent a1fc7d2e48
commit 26feccc28b
10 changed files with 335 additions and 226 deletions

View File

@ -5,6 +5,7 @@ import android.graphics.Color;
import android.text.TextUtils;
import android.widget.TextView;
import com.gh.common.AppExecutor;
import com.gh.common.constant.Config;
import com.gh.common.simulator.SimulatorGameManager;
import com.gh.download.DownloadManager;
@ -19,12 +20,12 @@ import com.gh.gamecenter.entity.SettingsEntity;
import com.gh.gamecenter.manager.PackagesManager;
import com.lightgame.download.DownloadEntity;
import com.lightgame.download.DownloadStatus;
import com.lightgame.utils.Utils;
import java.util.ArrayList;
import java.util.List;
import androidx.annotation.Nullable;
import androidx.annotation.WorkerThread;
public class GameUtils {
@ -54,22 +55,29 @@ public class GameUtils {
* 设置下载按钮状态
*/
public static void setDownloadBtnStatus(Context context, GameEntity gameEntity, TextView downloadBtn, PluginLocation pluginLocation) {
String status = getDownloadBtnText(context, gameEntity, pluginLocation);
downloadBtn.setTextColor(Color.WHITE);
downloadBtn.setText(status);
if (context.getString(R.string.pluggable).equals(status)) {
downloadBtn.setBackgroundResource(R.drawable.download_button_pluggable_style);
String pluginDesc = gameEntity.getPluginDesc();
if (pluginDesc.length() > 3) pluginDesc = pluginDesc.substring(0, 3);
downloadBtn.setText((pluginDesc + ""));
} else {
downloadBtn.setBackgroundResource(R.drawable.download_button_normal_style);
}
// getDownloadBtnText 里包括查询数据库、根据包名读取包体 meta 信息等
AppExecutor.getLightWeightIoExecutor().execute(() -> {
String status = getDownloadBtnText(context, gameEntity, pluginLocation);
AppExecutor.getUiExecutor().execute(() -> {
// TODO 切换线程时可能存在页面已销毁 view 已不存在这些乱七八糟的问题
downloadBtn.setTextColor(Color.WHITE);
downloadBtn.setText(status);
if (context.getString(R.string.pluggable).equals(status)) {
downloadBtn.setBackgroundResource(R.drawable.download_button_pluggable_style);
String pluginDesc = gameEntity.getPluginDesc();
if (pluginDesc.length() > 3) pluginDesc = pluginDesc.substring(0, 3);
downloadBtn.setText((pluginDesc + ""));
} else {
downloadBtn.setBackgroundResource(R.drawable.download_button_normal_style);
}
});
});
}
/**
* 获取下载按钮文案
* 获取下载按钮文案 (相对耗时,请优先在子线程调用)
*/
@WorkerThread
public static String getDownloadBtnText(Context context, GameEntity gameEntity, PluginLocation pluginLocation) {
if (gameEntity.getApk().size() > 1) {
return context.getString(R.string.expand);