当前位置:网站首页>视频直播源码,实现本地存储搜索历史记录
视频直播源码,实现本地存储搜索历史记录
2022-07-06 00:51:00 【云豹网络科技】
视频直播源码,实现本地存储搜索历史记录
1、build.gradle:
dependencies {
api 'com.tencent:mmkv-static:1.2.10'
}
2、Application初始化:
//rootDir是本地存储文件夹
String rootDir = MMKV.initialize(this);
MMKV kv = MMKV.mmkvWithID("search_history_id", MMKV.MULTI_PROCESS_MODE);
App.kv = kv;
//App是一个公共类
public class App {
public static MMKV kv;
}
3、 保存、获取历史记录Util类 把之前用的sp注释掉了 如果想用也可以参考
public class SearchHistoryUtil {
//保存搜索历史记录
public static void savaSearchWord(String keyword){
// String searchHistoryData = TeSharedPreferences.getInstance().getString("search_history");
String searchHistoryData = App.kv.decodeString("search_history");
if(searchHistoryData != null){
String[] tmpHistory = searchHistoryData.split(","); //逗号截取 保存在数组中
List<String> historyList = new ArrayList<String>(Arrays.asList(tmpHistory)); //将该数组转换成ArrayList
if (historyList.size() > 0) {
//1.移除之前重复添加的元素
for (int i = 0; i < historyList.size(); i++) {
if (keyword.equals(historyList.get(i))) {
historyList.remove(i);
break;
}
}
historyList.add(0, keyword); //将新输入的文字添加集合的第0位也就是最前面(2.倒序)
if (historyList.size() > 10) {
historyList.remove(historyList.size() - 1); //3.最多保存10条搜索记录 删除最早搜索的那一项
}
//逗号拼接
StringBuilder sb = new StringBuilder();
for (int i = 0; i < historyList.size(); i++) {
sb.append(historyList.get(i) + ",");
}
//保存到sp
// TeSharedPreferences.getInstance().putString("search_history",sb.toString());
App.kv.encode("search_history", sb.toString());
} else {
//之前未添加过
// TeSharedPreferences.getInstance().putString("search_history",keyword);
App.kv.encode("search_history", keyword);
}
}else{
App.kv.encode("search_history", keyword);
}
Log.e("search_history", "搜索历史记录:" + App.kv.decodeString("search_history"));
}
//获取搜索记录
public static List<String> getSearchHistory() {
// String longHistory = TeSharedPreferences.getInstance().getString("search_history");
String longHistory = App.kv.decodeString("search_history");
if(longHistory != null){
String[] tmpHistory = longHistory.split(","); //split后长度为1有一个空串对象
List<String> historyList = new ArrayList<String>(Arrays.asList(tmpHistory));
if (historyList.size() == 1 && historyList.get(0).equals("")) {
//如果没有搜索记录,split之后第0位是个空串的情况下
historyList.clear(); //清空集合,这个很关键
}
return historyList;
}
return new ArrayList<>();
}
4、sp代码
import android.content.Context;
import android.content.SharedPreferences;
import com.jumei.base.app.AppGlobalVar;
import java.util.HashMap;
import java.util.Map;
public class TeSharedPreferences {
private static final String APP_COMMON = "app_common";
public static final String APP_COOKIES = "app_cookies";
public static final String APP_INIT = "app_init";
private final SharedPreferences sharedPreferences;
private static final HashMap<String, TeSharedPreferences> preferencesManagerHashMap = new HashMap<>();
public static TeSharedPreferences getInstance() {
return getInstance(APP_COMMON);
}
public static TeSharedPreferences getInstance(String fileName) {
TeSharedPreferences instance = preferencesManagerHashMap.get(fileName);
if (instance == null) {
instance = new TeSharedPreferences(fileName);
preferencesManagerHashMap.put(fileName, instance);
}
return instance;
}
private TeSharedPreferences(String fileName) {
sharedPreferences = App.appContext.getSharedPreferences(fileName, Context.MODE_PRIVATE);
}
public void putString(String key, String value) {
sharedPreferences.edit().putString(key, value).apply();
}
public void putBoolean(String key, boolean value) {
sharedPreferences.edit().putBoolean(key, value).apply();
}
public void putInt(String key, int value) {
sharedPreferences.edit().putInt(key, value).apply();
}
public void putFloat(String key, float value) {
sharedPreferences.edit().putFloat(key, value).apply();
}
public String getString(String key) {
return sharedPreferences.getString(key, "");
}
public String getString(String key, String defValue) {
return sharedPreferences.getString(key, defValue);
}
public boolean getBoolean(String key, boolean defValue) {
return sharedPreferences.getBoolean(key, defValue);
}
public int getInt(String key, int defValue) {
return sharedPreferences.getInt(key, defValue);
}
public float getFloat(String key, float defValue) {
return sharedPreferences.getFloat(key, defValue);
}
public Map<String, ?> getAll() {
try {
return sharedPreferences.getAll();
} catch (Exception e) {
return null;
}
}
public void clear() {
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.clear();
editor.apply();
}
}
以上就是 视频直播源码,实现本地存储搜索历史记录,更多内容欢迎关注之后的文章
边栏推荐
- XML Configuration File
- The growth path of test / development programmers, the problem of thinking about the overall situation
- Starting from 1.5, build a micro Service Framework - call chain tracking traceid
- 《强化学习周刊》第52期:Depth-CUPRL、DistSPECTRL & Double Deep Q-Network
- XML配置文件
- Why can't mathematics give machine consciousness
- 【文件IO的简单实现】
- vSphere实现虚拟机迁移
- An understanding of & array names
- Folding and sinking sand -- weekly record of ETF
猜你喜欢
猿桌派第三季开播在即,打开出海浪潮下的开发者新视野
Anconda download + add Tsinghua +tensorflow installation +no module named 'tensorflow' +kernelrestart: restart failed, kernel restart failed
从 1.5 开始搭建一个微服务框架——调用链追踪 traceId
XML配置文件
BiShe - College Student Association Management System Based on SSM
Problems and solutions of converting date into specified string in date class
Comment faire votre propre robot
Model analysis of establishment time and holding time
程序员搞开源,读什么书最合适?
Mobilenet series (5): use pytorch to build mobilenetv3 and learn and train based on migration
随机推荐
常用API类及异常体系
Programmer growth Chapter 9: precautions in real projects
golang mqtt/stomp/nats/amqp
Spark SQL UDF function
devkit入门
How spark gets columns in dataframe --column, $, column, apply
curlpost-php
CTF daily question day44 rot
MIT博士论文 | 使用神经符号学习的鲁棒可靠智能系统
MYSQL GROUP_ The concat function realizes the content merging of the same ID
Leetcode 44 Wildcard matching (2022.02.13)
Arduino hexapod robot
Keepalive component cache does not take effect
Free chat robot API
An understanding of & array names
毕设-基于SSM高校学生社团管理系统
How to make your own robot
Analysis of the combination of small program technology advantages and industrial Internet
NLP basic task word segmentation third party Library: ICTCLAS [the third party library with the highest accuracy of Chinese word segmentation] [Chinese Academy of Sciences] [charge]
Cf:c. the third problem